Documentation.
ETF holdings, fund facts and security identity from primary sources. Version 1.7.0 of the API, read-only, JSON over HTTPS. This page is built from the OpenAPI file, which you can also load into your own tools.
Base URL
https://api.krabydata.com/v1. Every answer is JSON: { "data": ... }, lists add "pagination", and an error is { "error": "code", "message": "..." }. Any website may call the API from a browser (CORS is open for GET), but your key is then visible to your visitors: call it from your server when you can.
Accounts and keys
Keys belong to an account. Create one with your email and a password, open the link we mail you, and make a key under Keys in your account. An account holds up to three live keys, one per product or environment, each with a name you choose ("production", "staging"). Revoke a key there at any time; the others keep working.
Send a key in a header on every request but /v1/health and /v1/stats:
Authorization: Bearer kd_...
A key is kd_ followed by 43 characters. It is shown once, when it is made; we keep only its hash and cannot show it again. A key is never read from the query string, so it does not end up in logs or browser history.
The plan is the account's, not the key's. Its limits count the requests of all the account's keys together, and when you move to pro under Billing, every key the account has gets pro's limits at once, with no new key to deploy. Usage shows the last 30 days per day and per key.
Limits and their headers
Each plan allows a number of requests over a period, a UTC month on free and a UTC day on pro, and pro a number per minute (see the plans: 100 a month on free, 5,000 a day on pro), counted for the account across its keys. Every answer to a keyed request carries:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests your plan allows over its period: a UTC month on free, a UTC day on pro. |
X-RateLimit-Remaining | Requests your account has left in the period, this one counted. |
Retry-After | On a 429 only: seconds to wait, until the next minute, midnight UTC, or the 1st of next month. |
A daily count starts again at midnight UTC, a monthly one on the 1st. Unlimited plans send no limit headers.
Errors
The status says what kind of problem it is, error says exactly which, and message says it in words. Codes do not change within v1.
| Status | error | When |
|---|---|---|
| 400 | bad_request | A required parameter is missing or malformed: the resolver was given none of symbol, ticker with mic, or isin; a real-estate route lacks country and level, or q. |
| 400 | bad_area | A real-estate area id that is not COUNTRY-level-code, like BE-municipality-21009. |
| 400 | bad_metric | A metric the real-estate history does not know. |
| 400 | bad_query | A universe screen whose q is not a JSON object. |
| 400 | bad_symbols | A universe quote request without symbols, or with more than 500. |
| 400 | bad_address | Not an address of that chain: a Bitcoin address or xpub, a 0x Ethereum address, a Solana address. |
| 400 | bad_isin | An ISIN that is not two letters, nine characters and a check digit. |
| 400 | bad_date | A date that is not YYYY-MM-DD. |
| 400 | bad_sort | A sort field the fund list does not know. |
| 300 | ambiguous | Several funds share that ticker. The answer lists them in candidates; ask again by ISIN. |
| 401 | missing_key | No Authorization header, or not in the form Bearer <key>. |
| 401 | invalid_key | Not a KrabyData key, or a key that does not exist. |
| 403 | revoked_key | The key was revoked. |
| 403 | unknown_plan | The key's plan is no longer offered. Write to us. |
| 404 | not_found | No fund, security, area or route by that name. |
| 404 | not_licensed | A dataset your key may not see (see below). |
| 404 | no_holdings | No holdings stored for the fund on or before the date. |
| 404 | suspect_holdings | The only files for the date failed the weight check on write, and are held back. The message says why. |
| 405 | method_not_allowed | The API is read-only: GET only. |
| 429 | quota_exceeded | Your account's requests for the UTC day, across all its keys, are used up. Retry-After says when midnight UTC comes. |
| 429 | rate_limited | Too many requests this minute from your account's keys. Retry-After says how many seconds to wait. |
| 502 | upstream_unavailable | A public blockchain service we read from did not answer. Try again in a minute. |
| 500 | internal_error | Our fault. Nothing to change on your side; tell us if it lasts. |
What your key does not see, and why
KrabyData only passes on what its sources allow. PentaLab's own products see more than a customer's key; the difference is always the same, and it is stated here rather than discovered.
- Funds from issuers that have not agreed. Daily holdings files of Global X (Europe and US) and VanEck Europe carry notices against reproduction and derivative works. Those funds answer 404
not_licensedand are left out of every list, until an issuer agrees in writing. - Their funds that file with the SEC. A Global X US fund also files Form N-PORT, which is public. Such a fund answers from its filings only: its ISIN, ticker, name, EDGAR ids, the fee in its SEC prospectus and its N-PORT dates. Its NAV, net assets, launch date and the issuer's daily files are not shown.
- The resolver uses public evidence only.
/v1/listings/resolveanswers from OpenFIGI's listings, the security master rows SEC filings name with the ticker they give, and lines of SEC filings that carry their own ISIN. A symbol that only an issuer's file connects to an ISIN answers as an unknown symbol would, with no hint that anything was left out. The same rule applies to/v1/securities/{isin}. - No CUSIP and no SEDOL. CUSIP Global Services and LSEG own those codes and license them separately. Fields named
cusiporsedolnever appear in your answers. - FIGI with attribution. FIGIs are given, with
"attribution": "FIGI data from OpenFIGI"in the answer, which you should keep beside them.
How old the data is
Holdings from SEC Form N-PORT are dated at the filing's report period end. Funds file every month, but only the third month of each quarter is made public, 60 days after the quarter ends, so the holdings are two to five months old. Every such answer carries source.freshness saying so, and asOf with the date. Identity answers are current.
Versions
The base path carries the major version. Within /v1, fields and routes may be added; nothing is removed, renamed or changes meaning without a /v2, which would run beside /v1 for a notice period. Read your JSON so that an unknown field is ignored. Questions: contact@krabydata.com.
Routes.
/v1/health
no key neededService status, for status pages and uptime checks
Needs no key. Whether the database answers, each source's latest holdings date, and each collector's last run.
Answers
| 200 | Up |
| 503 | The database does not answer |
Fields of a 200 answer
okbooleantimestring (date-time)databaseobjectokbooleanmsinteger
holdingsarray of objectsourcestringlatestAsOfstring (date)lastFetchedAtstring (date-time)
collectorsarray of objectcollectorstringstartedAtstring (date-time)finishedAtstring (date-time) or nullfundsintegerfilesintegerrowsintegererrorsinteger
lastRunobject or null The most recent of the collectors' runs
/v1/stats
no key neededWhat the service holds, for the site's front page
Needs no key. Funds, the holding lines of each fund's latest file, the securities in the master, and per source its funds and latest holdings date. Kept for a minute; the answer says when it was computed.
Answers
| 200 | The figures |
Fields of a 200 answer
dataobjectfundsintegerfundsWithHoldingsintegerholdingLinesinteger Lines of each fund's latest holdings file, summedsecuritiesinteger ISINs in the security mastersourcesarray of objectsourcestringnamestringexternalDistributionboolean Whether external keys see this sourcefundsintegerfundsWithHoldingsintegerfundsWithFeesintegerholdingLinesintegerlatestAsOfstring (date) or null
asOfstring (date-time) When the figures were computed
/v1/issuers
Sources collected, with their counts, latest date and last run
An external key sees only the issuers whose data may be redistributed.
Answers
| 200 | The issuers |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataarray of objectidstringnamestringwebsitestring or nullnoticestring or nullexternalDistributionbooleanfundsintegerfundsWithHoldingsintegerlatestAsOfstring (date) or nulllastFetchedAtstring (date-time) or nulllinesLatestintegerlastRunobject or null
/v1/etfs
A page of funds
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
issuer | query | string | An issuer id from /v1/issuers (sec-nport, globalx...) |
q | query | string | Text found in the name, ticker or ISIN |
sort | query | string: ticker name issuer isin fees launched nav holdingsAsOf lines | |
dir | query | string: asc desc | Default asc |
limit | query | integer | Default 100 |
offset | query | integer | Default 0 |
Answers
| 200 | The page |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
paginationobjectlimitintegeroffsetintegercountintegertotalinteger
dataarray of objectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGItickerstring or nullnamestringissuerstringshareClassstring or nullthemestring or nullsfdrstring or nullongoingChargesPctnumber or nullinceptionDatestring (date) or nullcountriesarray of stringnetAssetsnumber or nullnavnumber or nullnavAsOfstring (date) or nulldomicilestring or nullreplicationstring or nulldistributionFrequencystring or nullbaseCurrencystring or nullindexNamestring or nulldetailsAtstring (date-time) or nullholdingsobject or nullasOfstring (date)countinteger
identifiedWeightPctnumber or nulledgarobject or null A US fund's ids in SEC EDGARcikstringseriesIdstring or nullclassIdstring or null
/v1/etfs/{id}
One fund's facts
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
id required | path | string | The fund's ISIN, or its ticker when no other fund shares it (300 otherwise) |
Answers
| 200 | The fund |
| 300 | Several funds share that ticker; use the ISIN |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGItickerstring or nullnamestringissuerstringshareClassstring or nullthemestring or nullsfdrstring or nullongoingChargesPctnumber or nullinceptionDatestring (date) or nullcountriesarray of stringnetAssetsnumber or nullnavnumber or nullnavAsOfstring (date) or nulldomicilestring or nullreplicationstring or nulldistributionFrequencystring or nullbaseCurrencystring or nullindexNamestring or nulldetailsAtstring (date-time) or nullholdingsobject or nullasOfstring (date)countinteger
identifiedWeightPctnumber or nulledgarobject or null A US fund's ids in SEC EDGARcikstringseriesIdstring or nullclassIdstring or null
issuerNamestring or nullhistoryobjectdaysinteger Holdings dates storedfromstring (date) or null
sourceobject Where the numbers came from, and how old they areissuerstring or nullissuerNamestring or nullurlstring or nullfetchedAtstring (date-time) or nullsha256string or nullnoticestring or null The source's own terms noticeexternalDistributionbooleanfreshnessstring or null How old this source's data is (N-PORT two to five months)
/v1/etfs/{id}/holdings
A fund's holdings on a date
The latest file on or before date (today when omitted) whose weights passed the check on write. Lines keep the file's own identifiers; a line whose file gave no ISIN may carry one found by a rule, named in isinFrom.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
id required | path | string | The fund's ISIN, or its ticker when no other fund shares it (300 otherwise) |
date | query | string (date) |
Answers
| 200 | The holdings |
| 300 | Several funds share that ticker; use the ISIN |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund (not_found), not licensed for an external key (not_licensed), no file on or before the date (no_holdings), or only files held back by the weight check (suspect_holdings, with the reason) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectetfobjectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGItickerstring or nullnamestringissuerstring
asOfstring (date)requestedDatestring (date) or nulltotalsobjectlinesintegersecuritiesintegerweightPctnumbersecuritiesWeightPctnumbercashWeightPctnumbercryptoWeightPctnumberotherWeightPctnumberidentifiedWeightPctnumber or null Share of the security weight whose lines carry an ISIN
sourceobject Where the numbers came from, and how old they areissuerstring or nullissuerNamestring or nullurlstring or nullfetchedAtstring (date-time) or nullsha256string or nullnoticestring or null The source's own terms noticeexternalDistributionbooleanfreshnessstring or null How old this source's data is (N-PORT two to five months)
attributionstring "FIGI data from OpenFIGI" when a line carries a FIGI (external keys)holdingsarray of objectlineintegerkindstring one ofsecurity,cash,crypto,othernamestringisinstring or nullisinFromstring or null The file, or the rule that found the ISIN. one offile,cusip,master-cusip,master-sedol,treasury,master-ticker,successorsedolstring or null Internal keys onlytickerstring or nulltickerFromstring or null one offile,mastercountrystring or nullfigistring or null The line's own FIGI, else the composite FIGI of its home marketshareClassFigistring or null Share class FIGIcusipstring or null Internal keys onlycurrencystring or nullsectorstring or nullassetCatstring or null N-PORT asset category (EC, EP, DBT...)weightPctnumber or nullsharesnumber or nullpricenumber or nullmarketValuenumber or null
/v1/etfs/{id}/holdings/dates
Every holdings date stored for a fund
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
id required | path | string | The fund's ISIN, or its ticker when no other fund shares it (300 otherwise) |
Answers
| 200 | The dates, newest first; a held-back date is listed with its reason and never served |
| 300 | Several funds share that ticker; use the ISIN |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectetfobjectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGItickerstring or nullnamestringissuerstring
datesarray of objectasOfstring (date)countintegerfetchedAtstring (date-time)suspectbooleansuspectReasonstring or null
/v1/etfs/{id}/holdings/open
Security lines of the latest file still without an ISIN, heaviest first, and why
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
id required | path | string | The fund's ISIN, or its ticker when no other fund shares it (300 otherwise) |
Answers
| 200 | The open lines |
| 300 | Several funds share that ticker; use the ISIN |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectetfobjectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGItickerstring or nullnamestringissuerstring
asOfstring (date)identifiedWeightPctnumber or nullopenLinesintegeropenWeightPctnumberopenarray of objectlineintegernamestringtickerstring or nullcusipstring or null Internal keys onlyassetCatstring or nullweightPctnumber or nullwhystring one oftie: preferred,tie: share classes,successor unconfirmed,venue unknown,no candidate,debt,no identifier,resolvablecandidatesarray of string
/v1/etfs/{id}/listings
Every venue a fund trades on, from OpenFIGI
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
id required | path | string | The fund's ISIN, or its ticker when no other fund shares it (300 otherwise) |
Answers
| 200 | The listings |
| 300 | Several funds share that ticker; use the ISIN |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectetfobjectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGItickerstring or nullnamestringissuerstring
listingsarray of objectfigistringisinstring or nullshareClassFigistring or null Share class FIGItickerstringexchCodestring or null Bloomberg venue codemicstring or nullsymbolstring or null Yahoo-style symbol where one existsnamestring or nullsecurityTypestring or nullfetchedAtstring (date-time)
attributionstring alwaysFIGI data from OpenFIGI
/v1/listings/resolve
The ISIN behind a symbol, a ticker on a venue, or the listings of an ISIN
Give one of symbol (a Yahoo-style symbol: DFNS.MI, NESN.SW, AMZN, BRK-B), ticker with mic, or isin. A fund is found in its OpenFIGI listings, a share in the security master, then in holdings lines. When several ISINs answer, isin is null and candidates lists them: the API never guesses. An external key's answer rests on public evidence only: OpenFIGI listings, the master rows SEC N-PORT filings name with the ticker they give, and N-PORT lines that carry their own ISIN.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol | query | string | |
ticker | query | string | |
mic | query | string | ISO 10383 market identifier code |
isin | query | string |
Answers
| 200 | The answer, possibly empty |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectisinstring or nullcandidatesarray of string or nullfundsarray of objectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGItickerstring or nullnamestringissuerstring
listingsarray of objectfigistringisinstring or nullshareClassFigistring or null Share class FIGItickerstringexchCodestring or null Bloomberg venue codemicstring or nullsymbolstring or null Yahoo-style symbol where one existsnamestring or nullsecurityTypestring or nullfetchedAtstring (date-time)
websitestring or null The company's website host (apple.com) when the ISIN names a share, from Wikidata (CC0)securitiesarray of objectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGInamestring or nullcurrencystring or nulltickersarray of stringheldByFundsintegerlastSeenstring (date) or nullcusipstring or null Internal keys onlycountrystring or null
attributionstring alwaysFIGI data from OpenFIGI
/v1/securities/{isin}
One security from the master, with its succession
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
isin required | path | string |
Answers
| 200 | The security |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGItickerstring or nullnamestring or nullcusipstring or null Internal keys onlyleistring or nullcountrystring or nullfirstSeenstring (date) or nulllastSeenstring (date) or nullheldByFundsinteger or nullsucceededByobject or nullisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGIeffectiveFromstring (date) or nullevidenceobject
succeedsarray of objectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGIeffectiveFromstring (date) or nullevidenceobject
/v1/securities/{isin}/funds
The funds holding a security, from each fund's latest file on or before the date
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
isin required | path | string | |
date | query | string (date) |
Answers
| 200 | The funds, heaviest weight first |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGInamestring or nullrequestedDatestring (date) or nullfundsarray of objectisinstring or nullfigistring or null Composite FIGI of the home marketshareClassFigistring or null Share class FIGItickerstring or nullnamestringissuerstringasOfstring (date)weightPctnumber or nullsharesnumber or nullmarketValuenumber or null
/v1/realestate/countries
Countries with real-estate figures, their levels of areas and their sources
Sale prices and rents per area come from official open data (statistics offices, tax administrations) under licences that allow reuse with a credit. Every answer names its sources; show their attribution next to the figures.
Answers
| 200 | The countries |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataarray of objectcountrystringnamestringlevelsarray of objectlevelstringareasintegerwithFiguresinteger Areas with at least one figurelateststring (date) or nullshapesboolean Outlines exist for the whole country at this levelsplitBystring or null The parent level whose areas this level's outlines are stored by (FR communes by department); ask /shapes and /map with parent
sourcesarray of objectidstringcountrystringnamestringpublisherstringurlstringlicencestringlicenceUrlstringattributionstring The credit line to show next to the figuresexternalDistributionboolean
/v1/realestate/map
The latest figures of every area of a country at one level, with the gross yield
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
country required | query | string | |
level required | query | string | |
parent | query | string | Only the areas inside this one (a level stored one parent at a time |
Answers
| 200 | The areas and their latest figures |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectcountrystringlevelstringareasarray of objectidstringcountrystringlevelstringcodestring The code the country's statistics office usesnamestringnamesobjectparentIdstring or nullactivebooleanfiguresarray of objectmetricstring one ofsale_price,sale_price_m2,rent,rent_m2,price_index,rent_indexpropertystring one ofall,house,apartment,landstatstring one ofmedian,mean,indexperiodstringperiodEndstring (date)valuenumberp25number or nullp75number or nullcountinteger or null Sales or leases behind the figureunitstringcurrencystring or nullsourcestring
grossYieldobject or nullpctnumber Twelve months of rent over the pricebasisstringpropertystringrentPeriodstringpricePeriodstringapproxboolean True when the price blends two kinds of dwelling or the periods differ
grossYieldGapobject or null Why there is no gross yield (null when there is one, or no figures at all)reasonstring one ofno_rent,no_price,different_kinds,far_apart,few_salesrentPeriodstringpricePeriodstringcountinteger The fewest sales or leases behind a figurerentPropertystringpricePropertystring
sourcesarray of objectidstringcountrystringnamestringpublisherstringurlstringlicencestringlicenceUrlstringattributionstring The credit line to show next to the figuresexternalDistributionboolean
/v1/realestate/shapes
The outlines of a country's areas at one level, as TopoJSON (WGS84, simplified); each geometry's id is the area id
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
country required | query | string | |
level required | query | string | |
parent | query | string | Only the areas inside this one (a level stored one parent at a time |
Answers
| 200 | The outlines |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectcountrystringlevelstringversionstringtopologyobject A TopoJSON topology with one object named after the levelsourceobjectidstringcountrystringnamestringpublisherstringurlstringlicencestringlicenceUrlstringattributionstring The credit line to show next to the figuresexternalDistributionboolean
/v1/realestate/areas/{id}
One area, its latest figures, gross yield, parents and children
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
id required | path | string |
Answers
| 200 | The area |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectidstringcountrystringlevelstringcodestring The code the country's statistics office usesnamestringnamesobjectparentIdstring or nullactivebooleanfiguresarray of objectmetricstring one ofsale_price,sale_price_m2,rent,rent_m2,price_index,rent_indexpropertystring one ofall,house,apartment,landstatstring one ofmedian,mean,indexperiodstringperiodEndstring (date)valuenumberp25number or nullp75number or nullcountinteger or null Sales or leases behind the figureunitstringcurrencystring or nullsourcestring
grossYieldobject or nullpctnumber Twelve months of rent over the pricebasisstringpropertystringrentPeriodstringpricePeriodstringapproxboolean True when the price blends two kinds of dwelling or the periods differ
grossYieldGapobject or null Why there is no gross yield (null when there is one, or no figures at all)reasonstring one ofno_rent,no_price,different_kinds,far_apart,few_salesrentPeriodstringpricePeriodstringcountinteger The fewest sales or leases behind a figurerentPropertystringpricePropertystring
parentsarray of objectidstringcountrystringlevelstringcodestring The code the country's statistics office usesnamestringnamesobjectparentIdstring or nullactiveboolean
childrenarray of objectlevelstringareasinteger
sourcesarray of objectidstringcountrystringnamestringpublisherstringurlstringlicencestringlicenceUrlstringattributionstring The credit line to show next to the figuresexternalDistributionboolean
/v1/realestate/areas/{id}/history
Every period of every series of an area
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
id required | path | string | |
metric | query | string: sale_price sale_price_m2 rent rent_m2 price_index rent_index | |
property | query | string: all house apartment land |
Answers
| 200 | The series, oldest period first |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectidstringcountrystringlevelstringcodestring The code the country's statistics office usesnamestringnamesobjectparentIdstring or nullactivebooleanseriesarray of objectmetricstringpropertystringstatstringfrequencystring A source publishing years and quarters gives one series of each. one ofmonth,quarter,half,yearunitstringcurrencystring or nullsourcestringpointsarray of objectperiodstringperiodEndstring (date)valuenumberp25number or nullp75number or nullcountinteger or null
sourcesarray of objectidstringcountrystringnamestringpublisherstringurlstringlicencestringlicenceUrlstringattributionstring The credit line to show next to the figuresexternalDistributionboolean
/v1/realestate/search
Areas whose name (in any of its languages, accents ignored) contains the text, names starting with it first, then larger areas
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
q required | query | string | Any part of the name in any of its languages; accents and case do not matter |
country | query | string | |
limit | query | integer | Default 12 |
Answers
| 200 | Up to 20 areas, names starting with the text first |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataarray of objectidstringcountrystringlevelstringcodestring The code the country's statistics office usesnamestringnamesobjectparentIdstring or nullactivebooleanparentNamestring or nullcountryNamestring or null
/v1/wines/search
Wines from the LWIN database whose name, producer or region contains every word typed, accents and case ignored
LWIN is published by Liv-ex under CC BY 4.0; every answer carries the credit line in source.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
q required | query | string | Words of the name, the producer or the region, like "lynch bages" |
kind | query | string: wine all | wine: wines only; all: spirits, beers and sakes as well |
limit | query | integer | Default 12 |
Answers
| 200 | Up to limit wines, names starting with the text first, retired LWINs last |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataarray of objectlwinstringnamestringproducerstring or nullwinestring or nullcountrystring or nullregionstring or nullsubRegionstring or nullsitestring or nullcolourstring or nulltypestring or nullsubTypestring or nulldesignationstring or nullclassificationstring or nullvintageConfigstring or nullfirstVintageinteger or nullfinalVintageinteger or nullstatusstring or null LWIN's own status; retired rows stay so a bottle already recorded keeps its nameisWineboolean
sourceobjectidstringnamestringpublisherstringurlstringlicencestringlicenceUrlstringattributionstring The credit line to show next to the namesexternalDistributionboolean
/v1/wines/{lwin}
One wine by its seven-digit LWIN, with the LWIN11 of a vintage when one is given
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
lwin required | path | string | |
vintage | query | integer | A year; LWIN11 is the LWIN followed by it (1000 for a non-vintage wine when absent) |
Answers
| 200 | The wine |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectlwinstringnamestringproducerstring or nullwinestring or nullcountrystring or nullregionstring or nullsubRegionstring or nullsitestring or nullcolourstring or nulltypestring or nullsubTypestring or nulldesignationstring or nullclassificationstring or nullvintageConfigstring or nullfirstVintageinteger or nullfinalVintageinteger or nullstatusstring or null LWIN's own status; retired rows stay so a bottle already recorded keeps its nameisWinebooleanvintageinteger or nulllwin11string or null
sourceobjectidstringnamestringpublisherstringurlstringlicencestringlicenceUrlstringattributionstring The credit line to show next to the namesexternalDistributionboolean
/v1/wallets/detect
Which chain an address or Bitcoin extended public key belongs to
Internal keys only for now; other keys receive 404 not_licensed. The address is never written to a log.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
address required | query | string |
Answers
| 200 | The chains it could be, empty when none |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataarray of objectchainstring one ofbitcoin,ethereum,solanainputstring one ofaddress,xpub
/v1/wallets/{chain}/{address}
What a public address holds and what moved in and out of it
Bitcoin (an address, or an xpub, ypub or zpub whose used addresses are found by the usual gap of 20), Ethereum (ETH and ERC-20 tokens with a known price worth a dollar or more; the rest are counted in hiddenTokens) and Solana (SOL and well-known tokens, the latest 50 transactions). Read from mempool.space, Blockscout and Solana's public RPC server; kept ten minutes. Internal keys only for now; other keys receive 404 not_licensed.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
chain required | path | string: bitcoin ethereum solana btc eth sol | |
address required | path | string |
Answers
| 200 | Balances and transfers, newest first |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_unavailable: the public service did not answer |
Fields of a 200 answer
dataobjectchainstringinputstring one ofaddress,xpubaddressesarray of objectbalancesarray of objectsymbolstringnamestringcontractstringquantitynumberpendingnumbernativeboolean
hiddenTokensintegertransfersarray of objectidstringtimestring (date-time) or nullconfirmedbooleandirectionstring one ofin,outsymbolstringcontractstringquantitynumberfeenumber Paid by this wallet
truncatedbooleanreadAtstring (date-time)sourceobject
/v1/universe/screen
One page of a screen over every stock or ETF of 50 markets, or every coin
Filters and sorts the market universe: every stock with a market cap or trading and every ETF of 50 markets, read from Yahoo's screener every 15 minutes while each market trades, with each company's figures, and every coin priced in dollars with a market cap, read every 15 minutes around the clock. Side listings are left out and a company on several lines shows its busiest one. Internal keys only; other keys receive 404 not_licensed.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
q | query | string | The query as JSON: { kind: stock | etf | crypto, markets: [us, de, ...] (ignored for crypto), filters: [{ field, min, max } or { field, values }], sort: { field, dir: asc | desc }, offset, size (up to 250) }. Amounts in US dollars. Unknown markets and fields are dropped; no markets means us. |
Answers
| 200 | The cleaned query, how many rows match, and the page |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectqueryobjecttotalintegerrowsarraytypedescription
/v1/universe/map
The largest names of a screen, sector by sector, or the largest funds
Stocks: up to 30 per sector by market cap (the query's sector filter chooses the sectors). ETFs: the 150 largest by net assets, one group. Coins: the 150 largest by market cap, one group (coins). Internal keys only; other keys receive 404 not_licensed.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
q | query | string | The query as JSON: { kind: stock | etf | crypto, markets: [us, de, ...] (ignored for crypto), filters: [{ field, min, max } or { field, values }], sort: { field, dir: asc | desc }, offset, size (up to 250) }. Amounts in US dollars. Unknown markets and fields are dropped; no markets means us. |
Answers
| 200 | One group per sector (or funds) |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectgroupsarray of objectkeystring A sector keyrowsarray of object
/v1/universe/quotes
Listings of the universe by symbol
Any line, side listings included, as the screen answers it. Prices are at most 15 minutes old while the market trades. Internal keys only; other keys receive 404 not_licensed.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbols required | query | string | Up to 500 Yahoo-style symbols |
Answers
| 200 | The rows found, by symbol, and the symbols not in the universe |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectunknownarray of string
/v1/universe/fields
The fields a screen can filter and sort on, per kind
Internal keys only; other keys receive 404 not_licensed.
Answers
| 200 | Field ids for stocks and for ETFs |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectstockarray of stringetfarray of stringcryptoarray of string
/v1/universe/breadth
The NYSE's daily breadth, from a date on
Per trading day, how many NYSE stocks closed at a 52-week high and at a 52-week low, how many rose and fell, and the volume of those that rose and fell (src/universe/breadth.js), for KrabyFlow's market mood. Internal keys only; other keys receive 404 not_licensed.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
from required | query | string (date) |
Answers
| 200 | One row per trading day, oldest first |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataarray of objectdatestring (date)stocksintegernewHighsintegernewLowsintegeradvancersintegerdeclinersintegerupVolumenumberdownVolumenumber
/v1/universe/status
The last read of each market, the company figures and the in-memory copy
Internal keys only; other keys receive 404 not_licensed.
Answers
| 200 | How fresh the universe is |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
Fields of a 200 answer
dataobjectmarketsarray of objectfiguresobjectsnapshotobject
/v1/market/quotes
Latest prices of listings, as KrabyFlow's provider contract gives them
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbols required | query | string | Up to 500 market symbols (AAPL, IWDA.AS, BTC-EUR), comma-separated |
currencies | query | string | JSON object symbol → the currency the listing trades in; a quote in another currency is refused |
Answers
| 200 | Object keyed by symbol: { price, currency, exchange, asOf, source }. The universe first, then Marketstack, then Yahoo; symbols nobody prices are absent. |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/fundamentals
Valuation, growth, dividends and analyst figures of one listing
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
Answers
| 200 | The fields of getFundamentals in the listing's currency, or null |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/lookup
What a symbol is priced as
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
Answers
| 200 | { symbol, name, currency, exchange, assetType, price } or null |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/search
Listings matching a name or ticker
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
q required | query | string | 1 to 100 characters |
Answers
| 200 | Up to ten { symbol, name, exchange, quoteType, assetType } |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/funds
Funds matching a name or an ISIN
KrabyFlow's market data provider (src/market/api.js): Yahoo's lookup of mutual funds, each named by its quote. A bank's name alone lists its funds ("argenta"); more words narrow them. Yahoo's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
q required | query | string | 1 to 100 characters |
Answers
| 200 | Up to 100 { symbol, name, exchange, quoteType, assetType, currency, price } |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/history
Daily closes adjusted for splits only, cash dividends and splits
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
from | query | string | YYYY-MM-DD; everything when left out |
Answers
| 200 | { closes: [{ date, close }], dividends: [{ date, amount }], splits: [{ date, ratio }] }, or null when the source failed |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/intraday
Prices through the last trading days
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
days | query | string | 1 to 35 (5-minute points for one day, 30-minute up to 7, hourly beyond) |
Answers
| 200 | { timeZone, points: [{ at, day, close }] } or null |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/earnings/history
Reported diluted EPS, trailing twelve months and fiscal years
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
Answers
| 200 | { currency, ttm, annual } or null |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/earnings/results
The last reported quarters against estimates, and the next estimate
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
Answers
| 200 | { currency, quarters, next } or null |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/capital
Share counts, cash, cash flow, share sales and stock pay per period
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
Answers
| 200 | { currency, industry, quarterly, annual, splits } or null |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/profile
Everything known about one security, for its page
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
Answers
| 200 | The profile in KrabyFlow's field ids, or null |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/fund
A fund's largest holdings, sector weights and asset mix from the market source
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
Answers
| 200 | { holdings, sectors, mix } or null (a fund's full holdings by ISIN are /v1/etfs/{id}/holdings) |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/identity
The ISIN behind a listing from the paid source (one request of its allowance)
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
Answers
| 200 | { symbol, isin, name, source } or null |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/website
A company's website host
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
symbol required | query | string | One market symbol (AAPL, IWDA.AS, BTC-EUR) |
Answers
| 200 | A host such as apple.com, or null |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/fx
US dollars per unit of each currency
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
currencies required | query | string | Up to 200 three-letter codes, comma-separated |
Answers
| 200 | Object keyed by currency; the ECB's reference rates first, the market source for the rest |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/fear-greed
The crypto fear and greed index (alternative.me, credit the source next to it)
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Parameters
| Name | In | Type | Meaning |
|---|---|---|---|
limit | query | string | Days, newest first; 0 for the whole history |
Answers
| 200 | alternative.me's answer as it sends it |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data
/v1/market/status
Where each kind of market data comes from, and Marketstack's month
KrabyFlow's market data provider (src/market/api.js). Yahoo's and Marketstack's data, which may not be passed on: internal keys only; other keys receive 404 not_licensed. A source that fails answers 502 upstream_error.
Answers
| 200 | The routing, what is paused, Marketstack's count and the ECB rates' date |
| 400 | A malformed parameter (bad_date, bad_isin, bad_sort, bad_request) |
| 401 | No key (missing_key) or an unknown one (invalid_key) |
| 403 | A revoked key (revoked_key) |
| 404 | No such fund or security (not_found), or a dataset an external key may not see (not_licensed) |
| 429 | Over the daily quota (quota_exceeded, until midnight UTC) or the per-minute rate (rate_limited) |
| 502 | upstream_error: the market source failed; message says how |
Fields of a 200 answer
data