Company profile
Fetch one company's record from an official register: name, status, legal form, registered address, identifiers and activity.
- $0.01 per verified company
- No contract
- Straight from the register
69 jurisdictions covered across official registers
Sample regions: United Kingdom, France, Germany, Sweden, Belgium, Brazil, Colombia, Argentina, California, Japan, Australia, SingaporeWhat it does
One company, every field we hold
The profile returns the normalised company record: legal name, status, legal form, registration and dissolution dates, registered address, identifiers such as the company number and VAT number, and activity codes. Persons are never included.
- One JSON shape in every jurisdiction
- Identifiers and activity codes included
- Data from official registers
Official register
Integrate
One call. Set your base URL and key once: they work for every endpoint on the platform.
# All endpoints share one base URL and key. Set them once:
export API_BASE="https://api.corpoapi.com"
export API_KEY="ck_live_..." # or ck_test_... to return fixtures and never bill
curl -X GET "$API_BASE/v1/companies/{jurisdiction}/{company_number}" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '/v1/companies/se/5567370431'Ship
Paste into Claude Code, Cursor, Codex, or any coding agent. It is already filled for the Company profile endpoint: set <my_stack> and your API key, and everything else stays exactly as written.
# Corpo API Company profile: integrate in 5 minutes
You are integrating Corpo API's Company profile endpoint into <my_stack>.
Follow these steps exactly. Every URL, header, and value below is canonical.
Do not paraphrase or "improve" them.
## 1. Provision an account
- Sign up: https://app.corpoapi.com (no credit card required).
- Or set credentials you already have:
export API_BASE="https://api.corpoapi.com"
export API_KEY="ck_live_..."
## 2. Make the call
GET $API_BASE/v1/companies/{jurisdiction}/{company_number}
Auth header: X-API-Key: ck_live_... (use ck_test_... for fixtures; test calls are never billed)
Body: /v1/companies/se/5567370431
Response: The company record, with identifiers, addresses and activity codes.
## 3. Handle the result
- 200: use the JSON response described above.
- On error, branch on the stable `error` field, never the message text.
- 429 = rate limited (back off and retry). 401 = invalid key. 422 = malformed body.
- Webhook / async: none. The profile returns synchronously in the HTTP response.
## 4. Hard rules, do not change
- Base URL is $API_BASE (set above). Do not invent other hosts.
- Auth header is `X-API-Key` (exact casing).
- Read the full reference before writing code: https://docs.corpoapi.com
## 5. Pricing (public)
- Per-call pricing is published at https://corpoapi.com/pricing.md. Read it there; do not hardcode a rate.
When in doubt: https://docs.corpoapi.comAPI reference
Company profile takes one request and returns one JSON document. The response below came from the live API, not a mock.
GET /v1/companies/se/5567370431
Sample response
Example response. Source metadata omitted for clarity.
{
"id": "co_sea81b5ad3d15a050b79a96d8b",
"jurisdiction": "se",
"company_number": "5567370431",
"company_number_scheme": "SE-ORGNR",
"legal_name": "Klarna Bank AB",
"display_name": null,
"legal_name_english": "Klarna Bank AB",
"legal_form_code": "AB-ORGFO",
"status": "active",
"registration_date": "1930-11-24",
"dissolution_date": null,
"address": {
"line1": "ARSC, DC24000",
"city": "GÖTEBORG",
"postcode": "40508",
"region": null,
"country": "SE",
"raw": "ARSC, DC24000 GÖTEBORG 40508 SE-LAND"
},
"is_natural_person": false,
"restricted": false,
"officers_availability": "gated",
"identifiers": [
{
"scheme": "SE-ORGNR",
"value": "5567370431",
"is_primary": true,
"valid_check": true
},
{
"scheme": "EU-VAT",
"value": "SE556737043101",
"is_primary": false,
"valid_check": true
}
],
"activity": [
{
"scheme": "SNI-2025",
"code": "70200",
"description": null,
"is_primary": true
},
{
"scheme": "SNI-2025",
"code": "78100",
"description": null,
"is_primary": false
},
{
"scheme": "SNI-2025",
"code": "85594",
"description": null,
"is_primary": false
}
],
"other_names": [
{
"name": "Klarna Bank AB",
"kind": "translated",
"start_date": "1998-02-12",
"end_date": null
}
],
"legal_form": {
"id": "se:AB-ORGFO",
"code": "AB-ORGFO",
"name_local": "Aktiebolag",
"name_en": "Limited company"
},
"freshness": {
"origin": "database",
"retrieved_at": "2026-10-15T16:43:13.413346+02:00",
"source_updated_at": "2026-10-15T16:43:13.413346+02:00",
"stale": false
}
}
Price per call
$0.01
per verified company. Billed once per company per day across all endpoints.
See every priceErrors
| Status | Code | When |
|---|---|---|
| 404 | company_not_found | No company matches that number in that jurisdiction. Never billed. |
| 422 | invalid_parameter | A path or query value fails validation. |
| 429 | rate_limited | A rate limit window is exceeded. Retry-After says how long to wait. |
| 402 | free_tier_exhausted | The free tier is used up and no payment method is set. Free calls keep working. |
Rate limits
- Free: 5 requests per second, 100 per minute.
- Paying: 50 requests per second, 2,000 per minute.
- Limits are per key, on a fixed 1-second window and a 1-minute window.
- Exceeding either window returns 429 with a Retry-After header in seconds.
- A batch call counts as one request, however many items it carries.
Simple by design
69
Jurisdictions covered
$0.01
Per verified company
1 schema
Consistent company data
Transparent pricing
Pay-as-you go, 1 cent per company, forever.
100 free calls to get started, then $0.01 per verified company. No subscription.
Pay as you go
Usage
Pay as you go · No contract
100 free
starter calls · No card
Everything included
- 100 free calls to get started
- Search, coverage and usage are always free
- Failed and ambiguous lookups are never billed
- REST API and hosted MCP server
Failed and ambiguous lookups are never billed, and the same company is billed at most once a day.
FAQ
Common questions
What is a verified company?
Does the profile include directors?
From the blog: Usage-based billing without the surprise invoice.