Company search

Find a company by name or registry number within a jurisdiction, with fuzzy matching that tolerates accents and messy input.

  • $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, Singapore

What it does

Name or number, one endpoint

Search accepts a company name or a registry number and returns ranked matches. Identifier lookups never go through fuzzy name search. They hit a unique index, so a known number always resolves exactly.

  • Accent-aware, fuzzy name matching
  • Exact lookup by registry number
  • Filter by jurisdiction and status
Find the legal entity
Acme Studio Ltd

GB · 01234567

Acme Design Ltd

GB · 07654321

Built in

Free, and the entry point to everything else

Search is free and never counts against your quota. Use it to resolve a name to a company number, then fetch the profile or run a verify with the number you found.

  • Cursor pagination, 1 to 100 results per page
  • Free on every plan
  • Coverage and status filters from the register
One company record
Company record

Official register

Legal nameAcme Studio Ltd
Company number01234567
StatusActive

Integrate

One call. Set your base URL and key once: they work for every endpoint on the platform.

terminal: search
# 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/search" \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '/v1/search?q=Klarna&jurisdiction=se&limit=20'

Ship

Paste into Claude Code, Cursor, Codex, or any coding agent. It is already filled for the Company search endpoint: set <my_stack> and your API key, and everything else stays exactly as written.

corpo api-search-integration-prompt.md
# Corpo API Company search: integrate in 5 minutes

You are integrating Corpo API's Company search 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/search
Auth header: X-API-Key: ck_live_... (use ck_test_... for fixtures; test calls are never billed)
Body: /v1/search?q=Klarna&jurisdiction=se&limit=20
Response: A ranked list of matching companies, each with name, company number, status and jurisdiction, plus a cursor for the next page.

## 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. Search returns synchronously and is never billed.

## 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.com

API reference

Company search takes one request and returns one JSON document. The response below came from the live API, not a mock.

GET /v1/search?q=Klarna&jurisdiction=se&limit=2

Sample response

Example response. Source metadata omitted for clarity.

search.json
{
  "data": [
    {
      "id": "co_se5ddfb60e9dc0a6069e9ab4e4",
      "jurisdiction": "se",
      "company_number": "7720001457",
      "company_number_scheme": "SE-ORGNR",
      "legal_name": "Nordic Build Supply AB",
      "display_name": null,
      "legal_name_english": null,
      "status": "dissolved",
      "legal_form_code": "EK-ORGFO",
      "address": {
        "line1": "Box 32",
        "city": "ARVIKA",
        "postcode": "67101",
        "region": null,
        "country": "SE",
        "raw": null
      },
      "match": {
        "type": "name_prefix",
        "identifier": null
      }
    },
    {
      "id": "co_seab172bec38144718ebadedba",
      "jurisdiction": "se",
      "company_number": "5561277533",
      "company_number_scheme": "SE-ORGNR",
      "legal_name": "Klarna Bank AB",
      "display_name": null,
      "legal_name_english": null,
      "status": "merged",
      "legal_form_code": "AB-ORGFO",
      "address": {
        "line1": null,
        "city": "GÖTEBORG",
        "postcode": "40508",
        "region": null,
        "country": "SE",
        "raw": null
      },
      "match": {
        "type": "name_prefix",
        "identifier": null
      }
    }
  ],
  "pagination": {
    "limit": 2,
    "next_cursor": "eyJvIjogMn0",
    "has_more": true,
    "total_estimate": 134,
    "returned": 2
  }
}

Price per call

Free

per call. Free. Search is never billed.

See every price

Errors

StatusCodeWhen
422invalid_parameterq is shorter than two characters, or no jurisdiction is given.
401invalid_api_keyThe key is missing, revoked or not valid.
429rate_limitedA rate limit window is exceeded. Retry-After says how long to wait.

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

$0.01/ company

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
Get started

Failed and ambiguous lookups are never billed, and the same company is billed at most once a day.

FAQ

Common questions

Is company search free?
Yes. Search is free and is never billed, on any plan. You are only billed when a lookup returns a company.
Can I search by company number?
Yes. Pass a registry number and it is matched exactly against the identifier index for that jurisdiction.
Why did I get an ambiguous result?
Ambiguous means several companies matched the name closely. The top candidates are returned and the call is free, so you can pick one and look it up by number.

From the blog: One OpenAPI spec, every surface.

Related

Start free with Corpo API

Verify any company from official registers with one API.