SK + CZ Company Lookup API 600 req/min free

REST API nad slovenským RPO + českým ARES. 3,268,818 firiem (2,100,314 SK + 1,168,462 CZ), IČO lookup 8 ms, autocomplete 12 ms, advanced-search 180 ms. Stable v1 JSON + OpenAPI 3.1 spec, CSV exporty, Bearer auth. Free tier bez kreditky.

Vyskúšaj teraz — zadaj IČO

No auth required pre /public/check/:ico.json. Response za ~20 ms.

Coverage + čerstvosť

3,268,818
firiem celkom
2,100,314
SK (RPO)
1,168,462
CZ (ARES)
1,790,043
aktívnych
9,045
s finančnými výkazmi
25,137
s UBO registrou

Code samples

# IČO lookup — no auth required (public endpoint)
curl https://entyrix.com/api/v1/public/check/35757442.json

# Full company detail (auth required — sign up for free key)
curl -H "Authorization: Bearer $API_KEY" \
  https://entyrix.com/api/v1/companies/35757442

# Autocomplete — Meilisearch typo-tolerant, 12ms
curl -H "Authorization: Bearer $API_KEY" \
  "https://entyrix.com/api/v1/companies/autocomplete?q=eset&limit=5"

# Bulk lookup — 100 IČO per request
curl -X POST -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"icos": ["35757442", "31322832", "00000019"]}' \
  https://entyrix.com/api/v1/companies/bulk

# Advanced search — CSV export (38 stĺpcov)
curl -H "Authorization: Bearer $API_KEY" \
  "https://entyrix.com/api/v1/companies/advanced-search.csv?country=SK&min_credit_score=80&limit=1000" \
  -o top_sk_suppliers.csv
import httpx

API = "https://entyrix.com/api/v1"
KEY = "your-api-key"
H = { "Authorization": f"Bearer {KEY}" }

# 1. IČO lookup (no auth)
r = httpx.get(f"{API}/public/check/35757442.json")
company = r.json()["data"]
print(company["name"], company["compliance"]["tier"])

# 2. Full detail with financials + enrichment
r = httpx.get(f"{API}/companies/35757442", headers=H)
c = r.json()["data"]
print(c["name"], c["latest_turnover_cents"] / 100)

# 3. Bulk lookup 100 IČO naraz
r = httpx.post(f"{API}/companies/bulk", headers=H, json={
    "icos": ["35757442", "31322832", "00000019"]
})
for c in r.json()["data"]:
    print(c["ico"], c["name"], c.get("credit_grade"))

# 4. Advanced search — pre-qualified suppliers
r = httpx.get(f"{API}/companies/advanced-search", headers=H, params={
    "country": "SK",
    "min_credit_score": "80",
    "nace_prefix": "62",  # IT services
    "limit": "50",
})
for c in r.json()["data"]["items"]:
    print(c["name"], c["credit_grade"])
const API = "https://entyrix.com/api/v1";
const KEY = process.env.OPENDATA_API_KEY!;
const H = { "Authorization": `Bearer ${KEY}` };

// 1. IČO lookup — no auth
const r1 = await fetch(`${API}/public/check/35757442.json`);
const { data: company } = await r1.json();
console.log(company.name, company.compliance.tier);

// 2. Autocomplete (Meilisearch, typo-tolerant)
const r2 = await fetch(
  `${API}/companies/autocomplete?q=eset&limit=5`, { headers: H }
);
const { data: suggestions } = await r2.json();

// 3. Bulk lookup (100 per req, ~10ms each)
const r3 = await fetch(`${API}/companies/bulk`, {
  method: "POST",
  headers: { ...H, "Content-Type": "application/json" },
  body: JSON.stringify({ icos: ["35757442", "31322832"] }),
});
const { data } = await r3.json();

// 4. Monitoring subscription — webhook on any change
await fetch(`${API}/monitoring/subscriptions`, {
  method: "POST",
  headers: { ...H, "Content-Type": "application/json" },
  body: JSON.stringify({
    ico: "35757442",
    webhook_url: "https://yourapp.com/opendata-webhook",
  }),
});
<?php
// Guzzle HTTP client (composer require guzzlehttp/guzzle)
$api = 'https://entyrix.com/api/v1';
$key = getenv('OPENDATA_API_KEY');
$client = new \GuzzleHttp\Client([
    'base_uri' => $api,
    'headers'  => ['Authorization' => "Bearer $key"],
]);

// 1. Public lookup
$r = $client->get("public/check/35757442.json");
$c = json_decode($r->getBody(), true)['data'];
echo $c['name'];

// 2. Invoice validation — bank account + VAT + sanctions
$iban = 'SK3112000000198742637541';
$r = $client->get("bank-accounts/lookup", ['query' => ['iban' => $iban]]);
$match = json_decode($r->getBody(), true)['data'];
if (!$match) die("IBAN nie je registrovaný platiteľ DPH — možný fraud");

// 3. Advanced-search CSV export (top SK suppliers v retail)
$r = $client->get("companies/advanced-search.csv", [
    'query' => [
        'country' => 'SK',
        'nace_prefix' => '47',  // retail
        'min_turnover_cents' => '100000000',
        'limit' => '500',
    ],
]);
file_put_contents('retail.csv', $r->getBody());

Hlavné endpointy

GET /companies/autocomplete?q=

Meilisearch typo-tolerant — "sloventka" → "Slovnaft". Debounce z frontend input-u. 12 ms

GET /companies/lookup?ico=

Exact IČO B-tree lookup, vracia základný profile + compliance flags + credit grade. 8 ms

GET /companies/:ico

Plný detail — profile + financials (posledné 5 rokov) + enrichment (website, tech, DNS). 45 ms

GET /companies/:ico/full

Aggregate endpoint — 14 sekcií naraz (contracts, UBO, sanctions, credit, NIS2, ...) namiesto 14 requestov. 120 ms

GET /companies/search?q=

pg_trgm fuzzy search fallback. Pre produkčný search použi autocomplete. 30 ms

GET /companies/advanced-search

30+ filters (NACE, country, NUTS, credit, turnover, NIS2, has_website, has_sanctions, ...) + pagination. 180 ms

GET /companies/advanced-search.csv

CSV export, 38 stĺpcov (financials + compliance + enrichment). Až 10k riadkov / request. stream

POST /companies/bulk

Batch lookup — 100 IČO / request (JSON array), vracia parallel response. 10 ms / each

GET /companies/by-lei?lei=

GLEIF Legal Entity Identifier lookup — 20-char LEI kód → IČO + detail. 9 ms

GET /bank-accounts/lookup?iban=

FS IBAN register (312k účtov, 212k firiem) — invoice-fraud prevention. 15 ms

POST /monitoring/subscriptions

Watch firmu — webhook on jakomkoľvek change (addresa, štatutár, konkurz, finančný výkaz). daily diff

GET /vat/validate?country=&vatin=

EU VIES VAT validator (27 štátov) s 24h cache. ~500 ms

Porovnanie s RPO / ARES / Finstat

Entyrix (my)RPO DataHubARES APIFinstat
IČO lookup speed8 ms~14 s300-900 ms400 ms
Rate-limit (free)600 req/min60 req/min60 req/minžiaden free tier
SK + CZ v jednej APIiba SKiba CZSK primárne
Financial statementsRUZ + bigint centsplatené
Sankcie screeningOFAC+EU+UN+UKlimited
UBO (RPVS)52k partners, 136k UBOčiastočne
Verejné zmluvy (CRZ)5.5M kontraktov
EU fondy (ITMS + CORDIS)21k + 3k projektov
OpenAPI 3.1 spec✓ + SwaggerXML schemadocs-only
CSV export38 stĺpcov, 10k/reqcez UI
Monitoring webhooksdaily diffemail only
Pricingfree → paid TBAfreefree€40-200/mes

Typické use cases

💳 Invoice validation

Pred výplatou: IBAN → firma (FS bank-accounts) + VAT validator (VIES) + sankcie (OpenSanctions) + bankrupt (OV). 3 API calls, 50 ms total. Blokuj payment ak sanction hit.

📋 CRM enrichment

IČO z form submit → GET /companies/:ico/full → auto-fill address, NACE, turnover range, employee range do CRM recordu. Re-enrichment týždenne cez bulk.

🔎 Auto-complete firiem

Frontend search input → /companies/autocomplete (12 ms, typo-tolerant). UX lepší ako ARES (žiadne typo tolerance, 300 ms).

📊 Marketing lists

advanced-search.csv — cieľaj SK firmy >€1M tržby v retail, majúce website + email. TAM calculator pre B2B sales.

🧾 AR credit check

Pre-invoice: grade + tax_debt + in_bankruptcy. D-F klienti iba cash-on-delivery. Zníži DSO + bad debt.

🔔 Change monitoring

Monitoring webhook — subscribe critical vendors → dostaneš webhook keď sa zmení konkurz flag, štatutár, bank account. Proactive risk alert.

FAQ

Ako dostanem API kľúč a koľko to stojí?
Free tier: 600 req/min bez auth pre všetky /api/v1/public/* endpointy (stats, rankings, data-feeds, check/:ico, transparency feeds). Paid tier pre authenticated endpointy (lookup/:ico, search, advanced-search, bulk, detail+subresources, CSV export, monitoring webhooks) — pricing finalizujeme, launch Q2 2026, early-adopter contact: [email protected]. Dotaz s use-case → dostanete dev API kľúč s 600 req/min na testovanie. Pre enterprise SLA (10k req/min + dedicated support + SLA 99.9%) po dohode.
Prečo nejsť priamo na RPO / ARES / Finstat?
Tri dôvody: (1) Speed — náš IČO lookup 8 ms, RPO DataHub ~14 s (sync scrape z Rails). ARES REST API 300-900 ms + 60 req/min hard limit. (2) Unified schéma — jeden request format pre SK aj CZ firmy, jedna autentifikácia, jedna rate-limit policy. Nemusíš pisať 2 integrácie. (3) Enrichment — okrem základných RPO/ARES fieldov máme pripojené FS (DPH register, tax reliability, bank accounts), CRZ (public contracts supplier side), RUZ (finančné výkazy), OpenSanctions (sankcie+PEP+crime), GLEIF (LEI), RPVS (UBO), NIS2 scoping, credit score. Jeden API call vráti všetko cez /companies/:ico/full.
Ako často sa dáta aktualizujú?
RPO: týždenne (Mon 05:00 UTC z Slovensko.Digital S3 dump ~1.1 GB gzipped). ARES: mesačne (1. dňa 10:00 UTC z ares.gov.cz VREO tar.gz ~800 MB). Finančné výkazy (RUZ): denne incremental (nové záznamy cez registeruz.sk REST API) + weekly full. Sankcie: denne (OpenSanctions goldencopy 04:30 UTC). CRZ zmluvy: týždenne. Ingestion history + last-updated timestamp per source: /status.
Aké formáty JSON vraciate? Sú stabilné?
Všetky endpointy vracajú { data, meta: { request_id, duration_ms, cached } } wrapper. Šéma per endpoint v OpenAPI 3.1 spec + Swagger UI. Field names v camelCase (consistent). Money fields vždy bigint cents (never float — int4 preliezal pri firmách >€21M). Dátumy ISO 8601 (YYYY-MM-DD). Verzia v1 stable — breaking changes pôjdu cez /v2 prefix, v1 bude deprecated min. 12 mesiacov dopredu.
Rate-limit + error handling?
429 Too Many Requests s Retry-After header po prekročení 600 req/min (per API kľúč alebo IP pre public endpointy). X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset headers na každom response. 503 Service Unavailable počas Monday 5-7 AM batch (plánujeme znížiť na 0 cez L2 snapshot pattern, WIP). 404 pre missing ICO (nie prázdne data). Exponential backoff recommended.
Môžem bulk-lookupovať 10k+ firiem?
Áno. POST /api/v1/companies/bulk — 100 IČO / request (array body), ~10 ms/each (1 s na batch 100). Pre 10k kontact list: 100 paralelných requestov s Promise.all dobehne za ~15 s. Pre ešte väčšie exports (100k+) použi GET /api/v1/companies/advanced-search.csv so 38 stĺpcami (až 10k riadkov / request, paginácia cez ?cursor=). Ak bulk je >1M firiem, máme custom export (CSV snapshot, 5 GB, kontakt).
SLA? Uptime?
Public stats: /status je verejný. Aktuálne beží single Hetzner CX23 VPS (2 vCPU, 4 GB RAM, 40 GB SSD, ~€6/mes) — no formal SLA pre free tier, but best-effort 99.5% uptime (monitored cez UptimeRobot). Enterprise tier bude multi-region s contractual 99.9% SLA + dedicated backup Hetzner + failover DNS. Weekly snapshot backup, daily DB dump. Incidents log: /status.

Ďalšie kroky