REST API

Five endpoints cover the surface area: a screener, an asset snapshot, timeseries, summary metrics, and aggregate sector trends. Every endpoint speaks JSON, accepts the same X-API-Key header, and shares the same error envelope.

GET/api/v1/assets/{type}Free demo · 100/day

List assets (screener)

Returns a columnar list of assets of the given type — the website's screener as an API. Supports field projection, sorting, and Stripe-style filtering (filter[field][gt|lt|contains|include|exclude]). Unknown field, sort, or filter column names return a 400 listing the bad names.

Parameters
FieldTypeDescription
fieldsstringComma-separated list of field names to include in the response. Omit for default fields per type.
sortstringField name to sort by (numeric columns, e.g. 'marketCap'). Omit for the type's default ranking.
orderstringSort order. Default: desc.
range:asc · desc
default:desc
limitintegerMaximum number of assets to return. Default 50, capped at 100.
range:1 – 100
default:50
filter[<field>][gt|lt|contains|include|exclude]stringStripe-style filter parameters. gt/lt are inclusive bounds on numeric columns; contains is a case-insensitive substring match on text columns; include/exclude take comma-separated categorical values. Examples: filter[marketCap][gt]=1000000000, filter[sector][include]=Technology,Energy, filter[companyName][contains]=micro. Repeatable.
Response · 200
FieldTypeDescription
dataobjectColumnar dataset. Contains an `ids` array and one array per requested field, all the same length.
metaobject

Sign in to try this endpoint live with your own API key.

Sign in to try it →
GET/api/v1/assets/{type}/{ticker}Free demo · 100/day

Get asset data

Returns aggregation fields for a specific asset. The available fields depend on the asset type.

Parameters
FieldTypeDescription
fieldsstringComma-separated list of field names to return. If omitted, returns default fields for the asset type.
Response · 200
FieldTypeDescription
dataAsset fields. Schema depends on the `type` path parameter.
metaobjectResponse metadata included with every successful response.

Sign in to try this endpoint live with your own API key.

Sign in to try it →
GET/api/v1/assets/{type}/{ticker}/timeseriesFree demo · 100/day

Get timeseries data

Returns historical timeseries data for a specific asset. Data is returned in columnar format with a dates array and one array per requested field.

Parameters
FieldTypeDescription
fieldsstringComma-separated list of field names to return. If omitted, returns default timeseries fields.
periodstringTime range for the timeseries data: 1d (hourly buckets), 1w/1m/3m (daily), 1y/all (monthly). The returned range matches the period exactly.
range:1d · 1w · 1m · 3m · 1y · all
default:1d
Response · 200
FieldTypeDescription
dataobjectColumnar timeseries data. Contains a `dates` array (Unix timestamps in seconds) and one array per requested field, all the same length.
metaobjectResponse metadata for timeseries and summary responses, extending the base Meta schema.

Sign in to try this endpoint live with your own API key.

Sign in to try it →
GET/api/v1/assets/{type}/{ticker}/summaryFree demo · 100/day

Get summary metrics

Returns summary metrics for a specific asset over the specified time period.

Parameters
FieldTypeDescription
fieldsstringComma-separated list of field names to return. If omitted, returns default summary fields.
periodstringTime range for the summary data.
range:1w · 1m · 3m · 1y
default:1m
Response · 200
FieldTypeDescription
dataobjectSummary timeseries for the requested asset and period: a `dates` array (Unix timestamps in seconds) plus one array per requested field. Each field value is an array of plain-text bullet strings for that date (empty array = no summary).
metaobjectResponse metadata for timeseries and summary responses, extending the base Meta schema.

Sign in to try this endpoint live with your own API key.

Sign in to try it →

Errors

Every failure response has the same envelope. The HTTP status identifies the class of error; the error.code field disambiguates within that class.

{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Missing API key"
  }
}
CodeHTTPWhen
INVALID_API_KEY401API key is missing, malformed, or revoked.
RATE_LIMIT_EXCEEDED429Per-minute or per-day budget exceeded. Inspect Retry-After to know when to retry.
INVALID_ASSET_TYPE400The `type` path parameter is not one of equities, funds, cryptocurrencies, commodities.
ASSET_NOT_FOUND404The requested ticker / id is unknown for the given type.
INVALID_PARAMETERS400One or more query parameters were missing, out-of-range, or otherwise invalid.
INTERNAL_ERROR500Server-side error. Retry with backoff; report if persistent.
FORBIDDEN403The authenticated tier lacks access to the requested resource.

Rate limits

Limits are enforced per API key with both a per-minute and a per-day budget. Free keys get a demo budget of 1/min · 100/day; Individual gets 10/min · 2000/day; Professional gets 100/min · 20000/day.

Response headers

HeaderMeaning
X-RateLimit-RemainingRequests remaining in the current window — the lesser of the per-minute and per-day remaining budgets.
Retry-AfterSeconds to wait before retrying. Emitted on 429 responses.

When the budget runs out

The API responds with HTTP 429 and the following body:

{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests",
    "retryAfter": 42
  }
}

See Plans & limits for the full tier matrix.

Download the OpenAPI spec

The full spec is published as a single JSON file. Import it into Postman, Insomnia, or any other OpenAPI-aware tool to generate clients or replay requests.

Download openapi.json

Versioned with every site deploy. Direct link: /openapi.json