Israeli Bank Scrapers¶
Scrape transactions from 19 Israeli banks and credit card companies with built-in Cloudflare WAF bypass and end-to-end PII redaction.
Quick Start Architecture overview API Reference
Who is this for?¶
-
Users — install the package, pick a
CompanyTypes, pass credentials, receive transactions. Start at Quick Start then jump to Banks → your bank. -
Developers — read Architecture → Pipeline to understand the typed phase chain, then drill into any Phase sub-step contract.
-
Maintainers — Workflow → CI gates and Workflow → Pre-commit explain every gate. Observability documents the structured events and redaction policy.
-
Adding a bank? — Contributing → Adding a new bank is a step-by-step from
CompanyTypesentry to declarativePipelineBuilder.
At a glance¶
flowchart LR
subgraph BB["Browser banks (13 pipeline)"]
direction LR
INIT --> HOME --> PRELOGIN["PRE-LOGIN (opt-in)"]
PRELOGIN --> LOGIN --> OTP["OTP (opt-in)"]
OTP --> AUTH["AUTH-DISCOVERY"] --> BIND["BIND-API-MEDIATOR"]
BIND --> SCRAPE["API-DIRECT-SCRAPE
(direct API — no nav)"] --> TERM["TERMINATE"]
end
subgraph API["API-direct banks (3)"]
direction LR
CALL["API-DIRECT-CALL"] --> SCR["API-DIRECT-SCRAPE"]
end
BB -.->|"unified result"| RESULT(["IScraperScrapingResult"])
API -.->|"unified result"| RESULT
| Surface | Counts | Source of truth |
|---|---|---|
| Banks supported | 19 total — 16 on Pipeline (13 browser + 3 api-direct), 3 on legacy migration path | Banks |
| Phases | Browser: INIT → HOME → [PRE-LOGIN] → LOGIN → [OTP] → AUTH-DISCOVERY → BIND-API-MEDIATOR → API-DIRECT-SCRAPE → TERMINATE · api-direct: 2 | Phases |
| Test suites | 412, ~4,800 tests, 97.20% statements coverage | Workflow → CI gates |
| Pre-commit gates | 12 gates in parallel | Workflow → Pre-commit |
What's new¶
- v8.6.0 — Direct-API scraping after login for every pipeline bank. The 13 browser banks retire the generic
ACCOUNT-RESOLVE → DASHBOARD → SCRAPE → BALANCE-RESOLVEnavigation chain: afterAUTH-DISCOVERY,BIND-API-MEDIATORbinds an authenticatedApiMediatorto the live page andAPI-DIRECT-SCRAPEwalks a typed hard-model shape of REST/GraphQL calls (accounts, balances, transactions) — no post-auth page navigation or DOM scraping. Balance is emitted by the shape's.final. - v8.4.0 — Two milestones land together:
BALANCE-RESOLVEsingle-phase ownership (v6). SCRAPE emits identities + template, BALANCE-RESOLVE owns every liveapi.fetchPost/fetchGetand per-card extraction. Universal-miss fail only when every card missed. (Retired in v8.6.0 — balance now rides the hard-model shape.)- Unified api-direct primitives across OneZero, Pepper, PayBox (signer config DU,
JsonValueTemplate, carry derivations).
- v8.3.0 — Pipeline architecture v2 (Strategy / Builder / Mediator / Result patterns, phase isolation, PII redaction).
See README → Version history for the full timeline.
Migration notice¶
Everything outside src/Scrapers/Pipeline/ is on a wide-net migration path: src/Scrapers/Base/, src/Common/, and the 5 legacy bank dirs will fold into Pipeline over time. Public API behavior is preserved. See Architecture → Migration strategy for the plan.