IFRS 20-F coverage is live: Spotify, Nu Holdings, and 400+ foreign private issuers
Search for Spotify on Thesma last week and you got back an empty response. Search today and you get eight years of income statements in EUR, with every line item normalised to the same schema used for Apple and Microsoft. Same for Nu Holdings. Same for GlobalFoundries, Globant, On Holding, and roughly 400 other foreign private issuers whose 20-F filings now flow through the same /financials endpoint every US-GAAP customer has been using since day one.
Every US public company on NYSE and NASDAQ — S&P 500, Russell 1000 and 2000, plus every exchange listing outside the indices — ~6,000 companies total, of which ~400+ now file under IFRS.
What shipped
IFRS 20-F normalisation landed as a taxonomy-mapping layer on top of our existing iXBRL pipeline. No new endpoints, no separate schema. If you’re already pulling /v1/us/sec/companies/{cik}/financials for US-GAAP filers, you don’t need to change any code to start getting IFRS data back — the same endpoint now serves both.
Two pieces of extra metadata show up on every response row:
taxonomy—'us-gaap'or'ifrs-full'. Tells you which reporting framework you’re looking at.currency— ISO-4217 code for the filer’s presentation currency.'USD'for US-GAAP filers (most of the time),'EUR'for Spotify,'BRL'for Brazilian IFRS filers, and so on.
A _reporting_notes object also now appears on every row. For most filers it carries two fields — presentation_format (by_function or by_nature) and ifrs_18_applied — which help you compare across filers when the framework conventions differ.
The new ?taxonomy= and ?currency= filter parameters are live on /companies and the screener. /companies?taxonomy=ifrs-full¤cy=EUR returns roughly 50+ European IFRS filers today. Useful for building lists without scraping the screener UI.
For the deeper “how” — iXBRL parsing, canonical field mapping, the comparability specifics — see the SEC EDGAR dataset page on docs.
Coverage
~400+ companies on NYSE and NASDAQ now file under IFRS, out of ~6,000 US public companies total. The count drifts with each filing season — this post uses ~400+ rather than a pinned figure because new filers land every week.
Thesma-verified IFRS anchors:
- Spotify (EUR)
- Nu Holdings (USD — a Brazilian issuer reporting in USD)
- GlobalFoundries (USD)
- Birkenstock (EUR)
- On Holding (CHF)
- Amer Sports (USD)
- Globant (USD)
- XP Inc
- AngloGold Ashanti (USD)
- Millicom (USD)
Most of these have 3+ years of annual history available today. A couple (AngloGold Ashanti, Millicom) currently show shallower history and will deepen with the next retro-discovery pass — both are named on the verified list because coverage is real, just thin for now.
The broader foreign-private-issuer population — ASML, Shell, AstraZeneca, HSBC, SAP, Toyota, Unilever, BHP, and hundreds more — is something we’re working through in Phase 2. Some of those names have data today; others don’t yet. We’re being deliberate about only naming companies we’ve verified end-to-end, because shipping a blog post that promises coverage on a specific filer and then returning empty on contact is the kind of trust regression we’d rather avoid.
Fetching Spotify’s financials
Use Spotify’s numeric CIK — ticker symbols return 404 on /financials (this is true for all filers on this specific endpoint, not an IFRS quirk). per_page=5 flips the response shape to a paginated array so you can pull multi-year history in one call:
curl "https://api.thesma.dev/v1/us/sec/companies/1639920/financials?statement=income&period=annual&per_page=5" \
-H "X-API-Key: $THESMA_API_KEY"
You get back:
{
"data": [
{
"company": { "cik": "0001639920", "ticker": "SPOT", "name": "Spotify Technology S.A." },
"statement": "income",
"period": "annual",
"fiscal_year": 2025,
"filing_accession": "0001628280-26-006874",
"taxonomy": "ifrs-full",
"currency": "EUR",
"line_items": {
"revenue": 17186000000,
"gross_profit": 5496000000,
"operating_income": 2198000000,
"net_income": 2212000000
},
"_reporting_notes": { "presentation_format": "by_function", "ifrs_18_applied": false }
},
{
"company": { "cik": "0001639920", "ticker": "SPOT", "name": "Spotify Technology S.A." },
"fiscal_year": 2024,
"taxonomy": "ifrs-full",
"currency": "EUR",
"line_items": { "revenue": 15673000000, "net_income": 1138000000 }
},
{
"company": { "cik": "0001639920", "ticker": "SPOT", "name": "Spotify Technology S.A." },
"fiscal_year": 2023,
"taxonomy": "ifrs-full",
"currency": "EUR",
"line_items": { "revenue": 13247000000, "net_income": -532000000 }
}
],
"pagination": { "page": 1, "per_page": 5, "total": 8, "total_pages": 2 }
}
FY2022 and FY2021 are truncated above for space — the full response returns €11.7B and €9.7B revenue for those years respectively. pagination.total: 8 means Spotify has 8 annual statements available going back to the 2018 NYSE listing.
taxonomy='ifrs-full' and currency='EUR' are the new metadata fields. Everything else is the same schema you already use for AAPL and MSFT, just returned as a paginated list when per_page is set.
Filtering by taxonomy or currency
Two new query parameters on /v1/us/sec/companies:
curl "https://api.thesma.dev/v1/us/sec/companies?taxonomy=ifrs-full¤cy=EUR" \
-H "X-API-Key: $THESMA_API_KEY"
Returns roughly 50+ IFRS filers reporting in EUR. Useful for narrowing searches by reporting framework or currency without post-filtering on the client. The SEC EDGAR docs page has the full list of accepted values.
Honest caveats
Three things to know before you ship code against this.
1. Native-currency reporting. Values are in the filer’s presentation currency. Spotify’s revenue: 17186000000 is €17.186B, not USD. No FX conversion in v1 — if you need a unified USD view across your IFRS and US-GAAP holdings, you apply client-side conversion at a reference rate of your choosing. USD-normalised IFRS values are on the roadmap for a future release; until then, the design choice is “honest native currency” over “lossy pre-conversion.”
2. Bank extensions. For banks filing under IFRS (Nu Holdings is the clearest Thesma-verified example today; other IFRS-reporting banks that file 20-F are in the broader FPI population), coverage is at top-level totals — revenue, net income, total assets, equity, operating/investing/financing cash flows. Sub-line-item detail lives in company-specific XBRL extension taxonomies and is deferred to v2 per-bank projects.
3. Six comparability caveats. IFRS and US-GAAP differ in ways that matter for cross-framework comparison: R&D capitalisation, LIFO inventory, operating-subtotal optionality, finance-costs scope, dividends classification, and bank extensions. We surface the divergences rather than silently smoothing them. The Reporting basis and comparability section on the docs has the full per-caveat explanation — read it before comparing an IFRS filer’s canonical field to a US-GAAP filer’s.
Why it’s differentiating
Most sub-$300/mo SEC APIs skip IFRS entirely or cover US-GAAP 20-F filers only. Cross-dataset SEC+Census+BLS+SBA enrichment — linking filings, demographics, labor markets, and small-business credit via NAICS + FIPS — is already the Thesma wedge. ?include=labor_context works identically for IFRS filers — labor context is BLS-based and taxonomy-agnostic. The same company-to-industry joins work the same way whether you’re looking at Apple or Spotify.
Try it
Free tier, no credit card. Grab a key or browse the SEC EDGAR docs for the full reference.