API v1 — Now Live

Verify. Enrich.
Trust.

Turn any European tax ID into a complete company profile. One API call returns validated VAT status, company name, address, activity codes, capital, and contacts.

27 EU Countries
<200ms Response
8 Enriched Countries
Response — 142ms
// GET /v1/company/PT509442013 { "status": "success", "data": { "vat_number": "PT509442013", "company_name": "Nexperience Lda", "legal_form": "LDA", "status": "active", "vat_valid": true, "address": { "city": "Leça do Balio", "region": "Porto" }, "activity": { "cae": "62010", "nace": "62.01" }, "capital": { "amount": 5000, "currency": "EUR" }, "sources": ["vies", "nif_pt"] } }
🇪🇺
EU VIES Official Source
🔒
GDPR Compliant
Edge-Deployed (Cloudflare)
📄
OpenAPI 3.0 Spec
One call. Full profile.
Stop juggling 5 different APIs for basic company data. VeriCorp aggregates official government registries from 8 countries into one clean JSON response.
1

Send a Tax ID

Pass any European tax identifier — Portuguese NIF, Spanish CIF, German USt-IdNr, or any EU VAT number. We auto-detect the country.

2

We Aggregate

VeriCorp queries VIES, national registries, and enrichment databases in parallel. Smart caching ensures sub-200ms responses.

3

Get Rich Data

Receive a normalized JSON with VAT validation, company details, activity codes, financial data, and contacts. All from one endpoint.

Built for developers.
Priced for startups.
Everything you need for KYB compliance, CRM enrichment, and business verification workflows. Starting at €4.99/month.

VAT Validation

Real-time validation against the official EU VIES system. Get a consultation number for your compliance records.

📊

Rich Enrichment

Go beyond valid/invalid. Get company name, address, activity codes (CAE/NACE), capital, legal form, and contacts.

🌍

27 EU Countries

Full VIES coverage across all EU member states. Enriched data for Portugal and Spain, with more countries coming soon.

Edge Performance

Deployed on Cloudflare Workers across 300+ locations. Sub-200ms response times for European requests. Smart 48h caching.

📦

Batch Endpoint

Validate up to 10 companies in a single request. Perfect for bulk onboarding, CRM cleanup, or periodic verification.

🛡️

Graceful Degradation

If a source is temporarily down, we return partial data from available sources instead of failing. You always get something.

Everything in one response
Here's what you get back for every company lookup. Enrichment depth depends on country — full enrichment available for PT, UK, DK, NO, FI, EE, PL, CZ.
  • VAT Validation
    Valid/invalid status from official VIES
    All EU
  • Company Name
    Legal name and trading name
    All EU
  • Registered Address
    Street, postal code, city, region, country
    All EU
  • Legal Form
    LDA, SA, Ltd, PLC, ApS, AS, Oy, OÜ, etc.
    8 Countries
  • Activity / CAE / NACE
    Business activity code and description
    8 Countries
  • Share Capital
    Amount and currency
    PT, EE
  • Status
    Active, inactive, or dissolved
    8 Countries
  • Contacts
    Phone, email, website
    PT
  • Directors / Shareholders
    Officers, PSC, board members, UBOs
    UK, DK, PL
// Full enriched response { "tax_id": "509442013", "vat_number": "PT509442013", "country": "PT", "company_name": "Nexperience Lda", "trading_name": "Nex", "legal_form": "LDA", "status": "active", "vat_valid": true, "address": { "street": "Rua da Lionesa 446", "postal_code": "4465-671", "city": "Leça do Balio", "region": "Porto" }, "activity": { "cae_code": "62010", "nace_code": "62.01", "description": "Software dev" }, "capital": { "amount": 5000.00, "currency": "EUR" }, "contacts": { "phone": "220198228", "email": "[email protected]", "website": "www.nex.pt" }, "sources": ["vies", "nif_pt"], "cached": false }
27 EU + UK
VAT validation for all EU countries. Enriched data from official government registries in 8 countries.
🇵🇹 Portugal
🇬🇧 United Kingdom
🇩🇰 Denmark
🇳🇴 Norway
🇫🇮 Finland
🇪🇪 Estonia
🇵🇱 Poland
🇨🇿 Czechia
🇩🇪 Germany
🇫🇷 France
🇮🇹 Italy
🇪🇸 Spain
🇳🇱 Netherlands
🇧🇪 Belgium
🇦🇹 Austria
🇮🇪 Ireland
🇸🇪 Sweden
🇷🇴 Romania
🇭🇺 Hungary
🇬🇷 Greece
🇧🇬 Bulgaria
🇭🇷 Croatia
🇸🇰 Slovakia
🇱🇹 Lithuania
🇱🇻 Latvia
🇸🇮 Slovenia
🇱🇺 Luxembourg
🇨🇾 Cyprus
🇲🇹 Malta
Enriched data (VAT + company profile) VAT validation (via VIES)
Simple, transparent pricing
Start free. Scale as you grow. No hidden fees, no "contact sales" walls.
Free
€0
forever
200 requests / month
  • Full enriched data included
  • VAT validation (27 EU)
  • Company name & address
  • Activity codes, capital, contacts
  • 10 req/min rate limit
Start Free
No credit card required
Starter
4.99
per month
1,000 requests / month
  • Everything in Free
  • 8 enriched countries
  • 30 req/min rate limit
  • Email support
Get Started
€0.005 per request
Business
39.99
per month
25,000 requests / month
  • Everything in Pro
  • 99.5% SLA guarantee
  • Force cache refresh
  • 150 req/min rate limit
  • Dedicated support
Get Started
€0.0016 per request
Who uses VeriCorp?
From fintech onboarding to accounting automation — wherever you need trusted company data.
🏦

Fintech & Neobanks

KYB onboarding is mandatory. Verify business customers instantly during account opening. Reduce manual review by 80%.

🛒

E-commerce & Marketplaces

Verify sellers and vendors automatically. Ensure correct VAT handling for B2B invoicing across EU borders.

💼

B2B SaaS

Enrich your CRM with real company data. Auto-fill registration forms. Segment customers by size, activity, and location.

📋

Accounting & ERP

Auto-complete client profiles from a tax ID. Validate VAT numbers for invoice compliance. Save hours of manual data entry.

API Reference
Everything you need to integrate VeriCorp. RESTful, JSON responses, simple authentication.
🔑

Authentication

All requests require an API key via the X-RapidAPI-Key header (RapidAPI) or Authorization: Bearer YOUR_API_KEY (direct). Get your free key by signing up — no credit card required.

Base URL

// RapidAPI https://vericorp.p.rapidapi.com // Direct https://api.vericorp.dev
GET /v1/company/{tax_id}

Company Lookup

Retrieve a full company profile from any EU tax identifier. Auto-detects country from format, or pass it explicitly.

Path Parameters
NameTypeDescription
tax_id string required Tax identifier with or without country prefix. E.g. PT509442013 or 509442013
Query Parameters
NameTypeDescription
country string optional ISO 3166-1 alpha-2 country code. Overrides auto-detection. E.g. PT
refresh boolean optional Force cache refresh. Default false. Business plan and above.
Code Examples
# Company Lookup — cURL curl -X GET \ "https://api.vericorp.dev/v1/company/PT509442013" \ -H "Authorization: Bearer YOUR_API_KEY"
// Company Lookup — JavaScript (fetch) const response = await fetch( "https://api.vericorp.dev/v1/company/PT509442013", { headers: { "Authorization": `Bearer ${API_KEY}` } } ); const data = await response.json(); console.log(data.data.company_name); // → "Nexperience Lda"
# Company Lookup — Python (requests) import requests response = requests.get( "https://api.vericorp.dev/v1/company/PT509442013", headers={"Authorization": f"Bearer {API_KEY}"} ) data = response.json() print(data["data"]["company_name"]) # → "Nexperience Lda"
GET /v1/validate/{vat_number}

VAT Validation

Quick VAT number validation against the official EU VIES system. Returns validity status, company name, and address when available. Faster than full lookup — use this when you only need validation.

Path Parameters
NameTypeDescription
vat_number string required EU VAT number with country prefix. E.g. IE6388047V
Code Examples
# VAT Validation — cURL curl -X GET \ "https://api.vericorp.dev/v1/validate/IE6388047V" \ -H "Authorization: Bearer YOUR_API_KEY" # Response { "status": "success", "data": { "vat_number": "IE6388047V", "valid": true, "company_name": "GOOGLE IRELAND LIMITED", "address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4", "country": "IE", "source": "vies" } }
// VAT Validation — JavaScript const { data } = await fetch( "https://api.vericorp.dev/v1/validate/IE6388047V", { headers: { "Authorization": `Bearer ${API_KEY}` } } ).then(r => r.json()); if (data.valid) { console.log(`✓ ${data.company_name}`); } else { console.log("✗ Invalid VAT number"); }
# VAT Validation — Python import requests r = requests.get( "https://api.vericorp.dev/v1/validate/IE6388047V", headers={"Authorization": f"Bearer {API_KEY}"} ).json() if r["data"]["valid"]: print(f"✓ {r['data']['company_name']}") else: print("✗ Invalid VAT number")
POST /v1/batch

Batch Lookup

Look up multiple companies in a single request. Up to 10 tax IDs per call. Available on Pro plan and above.

Request Body (JSON)
NameTypeDescription
tax_ids string[] required Array of tax identifiers. Max 10 per request.
enrich boolean optional Include enrichment data. Default true
Code Example
# Batch Lookup — cURL curl -X POST \ "https://api.vericorp.dev/v1/batch" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "tax_ids": ["PT509442013", "ES12345678A", "IE6388047V"], "enrich": true }' # Returns array of company profiles { "status": "success", "data": { "results": [ /* ... 3 company profiles ... */ ], "total": 3, "succeeded": 3, "failed": 0 } }
// Batch Lookup — JavaScript const response = await fetch( "https://api.vericorp.dev/v1/batch", { method: "POST", headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ tax_ids: ["PT509442013", "ES12345678A", "IE6388047V"], enrich: true }) } ); const { data } = await response.json(); console.log(`Found ${data.succeeded} companies`);
# Batch Lookup — Python import requests r = requests.post( "https://api.vericorp.dev/v1/batch", headers={"Authorization": f"Bearer {API_KEY}"}, json={ "tax_ids": ["PT509442013", "ES12345678A", "IE6388047V"], "enrich": True } ) data = r.json() for company in data["data"]["results"]: print(company["company_name"])
GET /v1/countries

Supported Countries

List all supported countries, their validation rules, and enrichment level (basic or full).

Response Example
{ "status": "success", "data": [ { "code": "PT", "name": "Portugal", "vat_prefix": "PT", "format": "9 digits", "enrichment": "full", "sources": ["vies", "nif_pt"] }, { "code": "GB", "name": "United Kingdom", "vat_prefix": "GB", "format": "9 or 12 digits", "enrichment": "full", "sources": ["companies_house"] }, { "code": "DE", "name": "Germany", "vat_prefix": "DE", "format": "9 digits", "enrichment": "basic", "sources": ["vies"] } // ... 25 more countries ] }
GET /v1/health

Health Check

Check API status and upstream data source availability. No authentication required.

Response Example
{ "status": "healthy", "version": "1.0.0", "uptime": "99.98%", "sources": { "vies": "operational", "nif_pt": "operational", "companies_house": "operational", "cvr_dk": "operational", "brreg_no": "operational", "prh_fi": "operational", "rik_ee": "operational", "krs_pl": "operational", "ares_cz": "operational" }, "cache": "connected", "timestamp": "2026-02-11T16:30:00Z" }

Status Codes

Standard HTTP status codes used across all endpoints.

200 Success — company data returned
206 Partial — some sources unavailable
400 Bad Request — invalid tax ID format
401 Unauthorized — invalid or missing API key
404 Not Found — company not found
429 Too Many Requests — rate limit exceeded
502 Bad Gateway — upstream source error
503 Service Unavailable — try again later

Rate Limits

Monthly request quotas per plan. Overage is billed per request at a discounted rate. Check your usage via the X-RateLimit-* response headers.

Free
200
req/month
Starter
1,000
req/month
Pro
5,000
req/month
Business
25,000
req/month
Response Headers
HeaderTypeDescription
X-RateLimit-Limit integer Your monthly request quota
X-RateLimit-Remaining integer Remaining requests this month
X-RateLimit-Reset timestamp When your quota resets (ISO 8601)

Ready to verify?

Start with 200 free requests per month. Full enrichment included. No credit card required.

Also on: APILayer Zyla API Hub Postman