API Reference · v1

Read-only REST API. Four endpoints, key-required.

Browse our public funding-rounds and company database programmatically. Pages are public; API requests require a per-user bearer token.

Quickstart

  1. Visit /keys/, enter your email, and open the magic link.
  2. Copy the raw secret from the link destination — it is shown exactly once.
  3. Send Authorization: Bearer <prefix>.<secret> with every request.
curl https://data.aimalcolm.com/api/v1/funding-rounds/ \
  -H "Authorization: Bearer mlm_xxxxxxxx.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"

Authentication

Every request to /api/v1/ must carry an Authorization: Bearer <key> header. Anonymous traffic is rate-limited to 0 requests per hour and will respond with HTTP 401 / 429.

Keys take the format mlm_<prefix>.<secret>. The prefix is stored in plaintext (so it is greppable in your own logs without revealing the secret); only the SHA-256 of the secret is persisted on our side.

Lost a key? Request another email link from /keys/. Each user can have up to 3 active keys.

Rate limits

The Free tier ships at 200 requests/hour per key, tracked on a sliding window. Every response carries:

  • X-RateLimit-Limit — your hourly cap.
  • X-RateLimit-Remaining — calls left in the current window.
  • X-RateLimit-Reset — Unix timestamp when the bucket frees up.

Over-quota requests respond with HTTP 429 and a Retry-After header. Back off; do not loop hammer.

Pagination

List responses are paginated: default 50 results per page, up to 200. Pass ?page=N and ?page_size=K.

The response envelope is { count, next, previous, results } — follow the next URL until null.

GET

/api/v1/funding-rounds/

List funding rounds (pre-seed through Series A) ordered by announced date, newest first.

Query parameters

stage
One of pre_seed, seed, series_a.
country
Exact match on the company's normalized country (e.g. United States).
major_sector
Exact match on the sector enum (TECHNOLOGY, HEALTHCARE, …).
industry
Case-insensitive substring match (e.g. fintech).
announced_after / announced_before
ISO date (YYYY-MM-DD), inclusive.
min_amount_usd / max_amount_usd
Whole-dollar amounts; rows with null amounts pass through min but are excluded by max.
curl 'https://data.aimalcolm.com/api/v1/funding-rounds/?stage=seed&country=France' \
  -H "Authorization: Bearer mlm_xxxxxxxx.yyyy"
{
  "count": 0,
  "next": null,
  "previous": null,
  "results": []
}
GET

/api/v1/funding-rounds/<id>/

Retrieve a single funding round by integer id.

curl https://data.aimalcolm.com/api/v1/funding-rounds/326/ \
  -H "Authorization: Bearer mlm_xxxxxxxx.yyyy"
{}
GET

/api/v1/companies/

List companies (only those with completed enrichment), ordered by last funding date.

Query parameters

country / major_sector / industry
Same semantics as on funding rounds.
last_stage
Filter by the company's most recent funding stage.
has_funding
Boolean: true only returns companies that have at least one tracked round.
curl 'https://data.aimalcolm.com/api/v1/companies/?major_sector=TECHNOLOGY&page_size=10' \
  -H "Authorization: Bearer mlm_xxxxxxxx.yyyy"
{
  "count": 0,
  "next": null,
  "previous": null,
  "results": []
}
GET

/api/v1/companies/<domain>/

Retrieve one company by its normalized domain. Includes founders + full funding history.

curl https://data.aimalcolm.com/api/v1/companies/acme.ai/ \
  -H "Authorization: Bearer mlm_xxxxxxxx.yyyy"
{}

Errors

Code Meaning
401Missing, malformed, or revoked API key.
403Reserved for future tier checks; not currently emitted.
404Unknown id / domain, or quarantined row.
405Write methods (POST / PUT / DELETE) are not supported.
429Rate limit exceeded. Read Retry-After and back off.

Changelog

  • v1.0 Initial release. Four read-only endpoints. Free tier at 200 req/hour.