Markets¶
A market is a country code; a route is the source that serves it.
Most markets have one route. Where a country has both a national route and
the ESEF index, the national route is the default and
source="esef_index" selects the index.
from opencorpfilings import provider_info, supported_markets
print(supported_markets())
route = provider_info("JP")
print(route.tier, route.identifiers, route.forms, route.date_filters, route.auth)
print(provider_info("IT", source="esef_index").coverage_note)
('AT', 'BE', 'DK', 'EE', 'ES', 'FI', 'FR', 'GR', 'HR', 'HU', 'IS', 'IT', 'JP', 'KR', 'LT', 'LU', 'MT', 'NL', 'NO', 'PL', 'PT', 'SE', 'SI', 'SK', 'UK', 'US')
supported ('four-digit securities code', 'EDINET code') ('annual', 'interim', 'quarterly', 'current', 'other') True required API key: api_key=, OPENCORPFILINGS_EDINET_API_KEY or EDINET_API_KEY
Secondary index of ESEF annual reports by LEI; it lags regulators by months and is incomplete. On 2026-10-08 it held 974 FY2025 December-year-end reports against 2,142 for FY2024 (45%), with whole countries at 0%.
provider_info() needs no credentials or network access; ocf markets
prints every route's profile as JSON. Company.filings() checks each request
against this profile before contacting the source.
Tiers¶
| Tier | Meaning | Routes |
|---|---|---|
| supported | qualified on fresh issuers: every sampled latest-annual workflow passed the release qualification | US, UK, JP, FR |
| limited | useful history with documented gaps | the ESEF index |
| experimental | implemented but not qualified for this release; opening one emits ExperimentalRouteWarning once per route and process |
KR, ES, NL, DK, SE, PL, FI |
Experimental and limited routes are outside the stability promise: they may change, be promoted or be removed in a minor release. The qualification runs are recorded in BENCHMARKS.md.
Route matrix¶
From provider_info() for every route in version 1.0.2. The ESEF index
row stands for 21 country routes, selected with source="esef_index" where a
national route also exists.
Identifiers and categories¶
| Market | Provider | Tier | Identifiers | Categories (forms) |
|---|---|---|---|---|
| US | sec |
supported | ticker, CIK | annual, quarterly, interim, current, prospectus, ownership, other |
| UK | companies_house |
supported | company number, exact company name | annual, other |
| JP | edinet |
supported | four-digit securities code, EDINET code | annual, interim, quarterly, current, other |
| FR | france_oam |
supported | LEI, exact source issuer name | annual, interim, quarterly |
| ESEF index | esef_index |
limited | LEI | annual |
| KR | open_dart |
experimental | six-character stock code, eight-digit corporation code | annual, interim, quarterly, other |
| ES | spain_cnmv |
experimental | issuer NIF | annual, interim |
| NL | netherlands_oam |
experimental | exact register issuer name | annual, interim |
| DK | denmark_oam |
experimental | source business ID, exact issuer name | annual, interim |
| SE | sweden_oam |
experimental | company registration number | annual, interim, quarterly |
| PL | poland_oam |
experimental | exact source issuer name | annual |
| FI | finland_oam |
experimental | exact OAM company name, numeric source company ID | annual, interim |
Filters, order and credentials¶
| Market | Native forms | Date filters | Amendment filter | order_basis |
Auth |
|---|---|---|---|---|---|
| US | yes | yes | yes | filing_date |
identifying User-Agent (required) |
| UK | yes | yes | yes | filing_date |
API key optional |
| JP | no | yes | yes | source_file_date |
API key (required) |
| FR | category codes only | yes | yes | published_at |
none |
| ESEF index | no | no | no | report_period |
none |
| KR | no | yes | yes | filing_date |
API key (required) |
| ES | no | yes | no | filing_date |
none |
| NL | no | yes | no | filing_date |
none |
| DK | no | yes | no | published_at |
none |
| SE | no | no | no | report_period_label |
none |
| PL | no | yes | yes | source_search_order |
none |
| FI | no | yes | no | published_at |
none |
The ESEF index route serves AT, BE, DK, EE, ES, FI, FR, GR, HR, HU, IS, IT, LT, LU, MT, NL, NO, PT, SE, SI and SK. In DK, ES, FI, FR, NL and SE it is the alternative to a national route; elsewhere it is the market's only route.
Capabilities¶
A capability says a route can perform an operation for qualifying records;
an individual filing can have fewer formats or no facts. Check one with
company.provider.supports("sections").
| Route | Source search | Direct filing lookup | HTML/XHTML | Packages (ZIP) | Raw facts | SEC sections and printed pages | |
|---|---|---|---|---|---|---|---|
| US | yes | yes | yes | yes (XBRL, iXBRL) | yes | ||
| UK | yes | with an API key | yes | yes | yes (iXBRL) | ||
| JP | yes | yes | yes | yes (XBRL, iXBRL) | |||
| FR | yes | yes | yes | yes | yes | yes (iXBRL) | |
| ESEF index | yes | yes | yes | yes (xBRL-JSON or iXBRL) | |||
| KR | yes | yes | yes (XBRL) | ||||
| ES | yes | yes | yes | yes | yes (XBRL, iXBRL) | ||
| NL | yes | yes | yes | yes | yes | yes (iXBRL) | |
| DK | yes | yes | yes | yes | yes | yes (iXBRL) | |
| SE | yes | yes | yes | yes (iXBRL) | |||
| PL | yes | yes | yes | yes (iXBRL) | |||
| FI | yes | yes | yes | yes | yes (iXBRL) |
Every route declares entity lookup, filing discovery, document download, streamed saves and text.
Markets without a route¶
- HK is pending authorized access;
Company(..., market="HK")raisesUnsupportedCapabilityError. - Retired 2026-10-09: the national routes for IS, LT, LV, HR, RO, SK, EE,
MT, CY, HU and LI were removed. HR, EE, HU, IS, LT, MT and SK now use the ESEF
index by LEI. CY, RO, LV and LI have no route and raise
UnsupportedMarketError. - Any other code raises
UnsupportedMarketError, with a hint for common aliases (GB→UK,USA→US,JPN→JP).
Source access terms for every route, including those without an adapter, are in Source access and rights.