API
Every table on the site answers in JSON too, with no key, no account and no quota.
The figures belong to the funds that file them and to the regulators that publish them. If you republish them, name the original source.
| Address | What it answers |
|---|---|
/api/company/<isin> Try it | The funds that hold a company, with the number of shares, the weight inside each fund and the share of capital where it is known. |
/api/fund/<id> Try it | What a fund holds, line by line, as of the date it filed. |
/api/isins Try it | Every company served, one ISIN and its address per line. |
/en/feed.xml Try it | Every fund whose portfolio arrives here or is updated, read from the report the fund publishes itself. |
/api/fund/<id>.csv Try it | The same table as a file, for a spreadsheet. |
/api/company/<isin>.csv Try it | The same table as a file, for a spreadsheet. |
/api/openapi.json Try it | The OpenAPI contract, generated from the constants the code serves. |
Every address here takes limit (1,000 rows by default, 12,000 at most) and offset; the page block of the answer carries the total and the addresses of the next and previous pages. The files also take lang, which writes the columns in one of the three languages of the site. Past 120 requests a minute, an address gets a 429 and the delay to wait.
No version in the addresses, because nothing will break: a field may appear, none disappears or changes meaning, and an address does not move.
Refusals
An error answers as application/problem+json (RFC 9457): its type field points at one of the anchors below, status and detail say the rest.
company-not-found- No company answers to that identifier. The list lives at /api/isins.
fund-not-found- No fund answers to that identifier.
not-found- The requested resource does not exist.
no-such-endpoint- No API address answers here.
method-not-allowed- These addresses are read-only: GET, HEAD and OPTIONS.
rate-limit-exceeded- Too many requests within the minute. retry-after says how long to wait.
server-error- The site failed to answer. Retry a little later.