Titelia

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.

The addresses
AddressWhat it answers
/api/company/<isin> Try itThe 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 itWhat a fund holds, line by line, as of the date it filed.
/api/isins Try itEvery company served, one ISIN and its address per line.
/en/feed.xml Try itEvery fund whose portfolio arrives here or is updated, read from the report the fund publishes itself.
/api/fund/<id>.csv Try itThe same table as a file, for a spreadsheet.
/api/company/<isin>.csv Try itThe same table as a file, for a spreadsheet.
/api/openapi.json Try itThe 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.