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
AddressResponse
/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 itThe holdings of a fund, line by line, as of the date it filed.
/api/isins Try itEvery company on the site, one per line, with its ISIN and its address.
/en/feed.xml Try itThis feed lists every fund whose portfolio arrives on Titelia or changes. It is 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. It is generated from the constants in the code.

Every address here takes limit (1,000 rows by default, 12,000 at most) and offset. The page block of the answer gives 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 to one of the codes in the list of refusals. The status and detail fields give the rest.

company-not-found
No company answers to that identifier. The full list is 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. The retry-after header gives the delay to wait.
server-error
The site failed to answer. Please retry a little later.