Stack Lookup
Get a free key

The contract

API

30

published endpoints, 15 of them free. One envelope, one error format, OpenAPI 3.1 at /v1/openapi.json.

Counting is free and needs no key. Rows cost credits. Every answer on this site is the same object this contract returns, at the same address with a .json extension.

Get a free keyOpen the OpenAPI documentThe error formatThe MCP server

Authentication

curl "https://stacklookup.ai/v1/domains/stripe.com" -H "Authorization: Bearer vr_live_xxxxxxxxxxxxxxxxxxxx"

A bearer token in the Authorization header. x-api-key is accepted too. A free key carries 5,000 credits a month; the endpoints marked free below cost nothing and answer without a key at 60 requests an hour per address.

Technologies and categories

Method
Path
What it returns
Credits
GET
/technologies?q=&category=&kind=&cursor=
Search technologies by name, alias or category slug.
0
GET
/technologies/{key}
Record with vendor, adoption facets, 12-month trend and competitors. key is tech_id, slug or exact name.
0
GET
/categories
The taxonomy tree, L0 to L2, with definitions and counts.
0
GET
/vendors/{org_id}
Vendor company card and its technologies. The vendor of a technology is on GET /technologies/{key} today.
not yet
GET /technologies?q=&category=&kind=&cursor=0Search technologies by name, alias or category slug.
GET /technologies/{key}0Record with vendor, adoption facets, 12-month trend and competitors. key is tech_id, slug or exact name.
GET /categories0The taxonomy tree, L0 to L2, with definitions and counts.
GET /vendors/{org_id}not yetVendor company card and its technologies. The vendor of a technology is on GET /technologies/{key} today.

Domains

Method
Path
What it returns
Credits
GET
/domains/{domain}
Host or root profile: detections with intervals, versions, hosts, company refs, changes_90d. Query: live_only, countable_only, category, hosts=all|root, include=evidence,history. include=evidence costs the second credit and returns an empty evidence[] in this release, so leave it off.
1 (2 with include)
GET
/domains/{domain}/summary
Counts per category, first and last crawled, freshness.
0
GET
/domains/{domain}/history?technology=&from=&to=
Verification series per host and technology.
1
GET
/domains/{domain}/changes?since=&kind=
Change events on the root and its hosts.
1 when events exist
GET
/domains/{domain}/relationships
Other hosts and domains of the same company and group. GET /companies/{org_id}/domains answers the same question today.
not yet
GET /domains/{domain}1 (2 with include)Host or root profile: detections with intervals, versions, hosts, company refs, changes_90d. Query: live_only, countable_only, category, hosts=all|root, include=evidence,history. include=evidence costs the second credit and returns an empty evidence[] in this release, so leave it off.
GET /domains/{domain}/summary0Counts per category, first and last crawled, freshness.
GET /domains/{domain}/history?technology=&from=&to=1Verification series per host and technology.
GET /domains/{domain}/changes?since=&kind=1 when events existChange events on the root and its hosts.
GET /domains/{domain}/relationshipsnot yetOther hosts and domains of the same company and group. GET /companies/{org_id}/domains answers the same question today.

Companies

Method
Path
What it returns
Credits
GET
/companies/resolve?domain=&name=&country=
Candidates with match score, org_id, hq_org_id, domains.
1
GET
/companies/{org_id}
Firmographics, group, legal ids, domains, aggregated stack with per-host provenance.
2
GET
/companies/{org_id}/technologies
Paginated stack.
1 per page
GET
/companies/{org_id}/changes
Change events across the company hosts.
1 per page
GET
/companies/{org_id}/domains
Domains and hosts of the company.
1 per page
GET
/groups/{hq_org_id}/technologies
Footprint of a corporate group: shared[] and by_company[].
2
GET /companies/resolve?domain=&name=&country=1Candidates with match score, org_id, hq_org_id, domains.
GET /companies/{org_id}2Firmographics, group, legal ids, domains, aggregated stack with per-host provenance.
GET /companies/{org_id}/technologies1 per pagePaginated stack.
GET /companies/{org_id}/changes1 per pageChange events across the company hosts.
GET /companies/{org_id}/domains1 per pageDomains and hosts of the company.
GET /groups/{hq_org_id}/technologies2Footprint of a corporate group: shared[] and by_company[].

Lists

Method
Path
What it returns
Credits
POST
/lists/count
Total and facets for a filter. No rows.
0
POST
/lists/companies
Companies matching a filter, one row per company, cursor paginated.
1 per 25 rows
POST
/lists/hosts
Hosts matching a filter, one row per host.
1 per 50 rows
POST /lists/count0Total and facets for a filter. No rows.
POST /lists/companies1 per 25 rowsCompanies matching a filter, one row per company, cursor paginated.
POST /lists/hosts1 per 50 rowsHosts matching a filter, one row per host.

Changes, bulk, account

Method
Path
What it returns
Credits
GET
/changes?technology=&kind=&country=&since=&cursor=
Universe change feed.
1 per 25 events
POST
/webhooks
Register a filtered change webhook (paid tiers). GET lists, DELETE /webhooks/{id} removes.
1 per 25 events delivered
POST
/bulk/domains
Up to 32 domains synchronously, larger jobs return 202 with a job_id; GET /bulk/{job_id} and /bulk/{job_id}/result (NDJSON, 7 days).
as lookups, 20 percent off above 1,000
GET
/me
Key, tier, limits.
0
GET
/usage
Credits used and remaining this period, calls by endpoint.
0
GET /changes?technology=&kind=&country=&since=&cursor=1 per 25 eventsUniverse change feed.
POST /webhooks1 per 25 events deliveredRegister a filtered change webhook (paid tiers). GET lists, DELETE /webhooks/{id} removes.
POST /bulk/domainsas lookups, 20 percent off above 1,000Up to 32 domains synchronously, larger jobs return 202 with a job_id; GET /bulk/{job_id} and /bulk/{job_id}/result (NDJSON, 7 days).
GET /me0Key, tier, limits.
GET /usage0Credits used and remaining this period, calls by endpoint.

What a credit buys

n15 of 30
Denominatorendpoints cost nothing, including every count
Landing12 Sept 2026
Figurecredits.table

Credits per callrows cost 1 credit per 25; counting is always freeThe tiers and what each one includes

An endpoint marked "not yet" is in the contract and answered with 501 by this deployment. It is listed because the contract is the promise; it costs nothing because it does not run.