skills/apify-financial-services/skills/apify-public-registries/SKILL.md
Look up official company data from European public registries across 11 countries/regions (CZ, SK, PL, DE, UK, NL, RO, HR, SE + EU-level + ESG). Covers company registration, ownership, financial filings, VAT status, ESG data. Use when the user asks to "look up a company", "check registry", "find company info", "look up IČO/KRS/LEI/CRN", "company due diligence", "check VAT status", "find ownership structure", or needs official data from European registries. Reads tracked companies from data/companies.json. Some lookups use Python scripts (stdlib), some fall back to Apify actors for scraping-based registries.
npx skillsauth add apify/awesome-skills apify-public-registriesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Look up official company data from European public registries via Python scripts (direct REST API) or Apify actor fallback (scraping when no API exists).
apify CLI (npm install -g apify-cli && apify login); fallback: Apify MCP connector (call-actor tool). CLI is faster and preferred when both are available.KVK_API_KEY env var (register at developers.kvk.nl — see REGISTRATION/NL.md)GUS_API_KEY env var (email [email protected])${CLAUDE_PLUGIN_ROOT} is the plugin's root directory (where .claude-plugin/ lives). It is resolved automatically by Claude Code when the plugin is installed, or set to the --plugin-dir path during development.
Copy this and tick boxes as you progress:
Task Progress:
- [ ] Step 0: Verify prerequisites — run `python3 --version` (required); for Apify-dependent registries: try `apify --version && apify info`, or check for `call-actor` MCP tool; if neither, tell user to install apify CLI or Apify MCP connector
- [ ] Step 1: Identify country + identifier type (IČO/KRS/CUI/LEI/company name)
- [ ] Step 2: Run the lookup command per country table
- [ ] Step 3: Interpret results (key fields vary by source)
- [ ] Optional: Apify fallback for scraping-based registries
- [ ] Optional: Cross-reference with EU-level sources (GLEIF LEI, ESMA bonds, EBA)
All paths relative to ${CLAUDE_PLUGIN_ROOT}/skills/apify-public-registries/.
| Country | Command | Identifier | Access |
|---|---|---|---|
| CZ | python3 reference/scripts/CZ/fetch_all.py lookup <IČO> | IČO (8-digit) | Free (ARES API) |
| SK | python3 reference/scripts/SK/fetch_all.py lookup <IČO> | IČO | Free (ORSR scraping) |
| PL | python3 reference/scripts/PL/fetch_all.py lookup <KRS> | KRS (10-digit, zero-padded) | Free (KRS API) |
| PL | python3 reference/scripts/PL/fetch_all.py lookup_nip <NIP> | NIP (10-digit) | Free (Biała Lista, 100/day) |
| PL GUS | (included in batch fetch_all.py) | NIP | GUS_API_KEY REQUIRED — without it, returns fake test data silently (see gotchas) |
| DE | python3 reference/scripts/DE/fetch_all.py keyword <name> | Company name | Apify (mcpc CLI) |
| UK | python3 reference/scripts/UK/fetch_all.py search <name> | Company name | Apify (mcpc CLI) |
| NL | python3 reference/scripts/NL/fetch_all.py | KVK number (configured) | API key (KVK_API_KEY) |
| RO | python3 reference/scripts/RO/fetch_all.py lookup <CUI> | CUI number | Free (ANAF — offline since 2026-03) |
| HR | Manual — see REGISTRATION/HR.md | OIB / MBS | OAuth registration |
| SE | Manual — see REGISTRATION/SE.md | Org.nr | Bolagsverket registration |
| EU | python3 reference/scripts/EU/fetch_all.py lookup <name> | Company name | Free (GLEIF + ESMA + TED) |
| EU | python3 reference/scripts/EU/fetch_all.py lookup_lei <LEI> | LEI (20-char) | Free (GLEIF) |
| ESG | python3 reference/scripts/ESG/fetch_all.py lookup <country> | Country name/ISO code | Free |
| Need | Best source | Command |
|---|---|---|
| Basic profile (name, address, legal form) | CZ: ARES, SK: ORSR, PL: KRS, DE: Handelsregister, UK: Companies House | See country table above |
| Ownership / corporate tree | EU GLEIF | EU/fetch_all.py lookup_lei <LEI> |
| Financial filings (CZ) | Justice.cz sbírka listin (Apify fallback) | CZ/fetch_all.py justice |
| Financial filings (SK) | FinStat.sk | SK/fetch_all.py finstat |
| Financial filings (PL) | eKRS via Apify | PL/fetch_all.py financials |
| Bonds & instruments | ESMA FIRDS | EU/fetch_all.py lookup <name> |
| VAT / due diligence (CZ) | DPH register | Included in CZ/fetch_all.py lookup |
| VAT / due diligence (PL) | Biała Lista | PL/fetch_all.py lookup_nip <NIP> |
| Bank regulatory data | EBA Transparency CSVs (100MB+) | EU/fetch_all.py eba |
| ESG / emissions | Climate TRACE + EU ETS | ESG/fetch_all.py lookup <country> |
| Regulated entities (CZ) | ČNB bank list + OAM | CZ/fetch_all.py cnb_banks / cnb_oam |
| Public procurement | TED | EU/fetch_all.py lookup <name> |
${CLAUDE_PLUGIN_ROOT}/data/companies.json -> identifiers.registry_ids for existing IDs.Identifier types by country:
Execute the command from the country table. Scripts are at:
${CLAUDE_PLUGIN_ROOT}/skills/apify-public-registries/reference/scripts/<CC>/fetch_all.py
Example — look up a company in Czech ARES:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/apify-public-registries/reference/scripts/CZ/fetch_all.py lookup 25099345
Example — find ownership chain via GLEIF:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/apify-public-registries/reference/scripts/EU/fetch_all.py lookup_lei 31570048XH84U51GGT05
Example — look up InPost in KRS:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/apify-public-registries/reference/scripts/PL/fetch_all.py lookup 0000536554
Batch fetch (all companies in a country):
python3 reference/scripts/CZ/fetch_all.py # all CZ sources (ares, dph, cnb_banks, cnb_oam, justice)
python3 reference/scripts/PL/fetch_all.py # all PL sources (krs, biala_lista, gus, financials)
python3 reference/scripts/EU/fetch_all.py # all EU sources except EBA (gleif, ted, esma, eurostat)
Key fields vary by source:
| Source | Key fields | |---|---| | ARES (CZ) | obchodniJmeno, dic, sidlo.textovaAdresa, czNace, datumVzniku, pravniForma | | DPH (CZ) | nespolehlivyPlatce (unreliable payer flag), bank accounts | | GLEIF (EU) | lei, legalName, jurisdiction, status, registeredAs, parent LEI + name | | KRS (PL) | nazwa, nip, regon, kapital (share capital) | | Biała Lista (PL) | statusVat, krs, regon, accountNumbers | | ORSR (SK) | name, address, legal_form, share_capital, registration_date | | FinStat (SK) | revenue, profit, employees, assets | | Handelsregister (DE) | name, legal form, share capital, management, HRB number | | Companies House (UK) | company number, SIC codes, directors, incorporation date | | ESMA FIRDS (EU) | isin, lei, instrument name, cfi_code, status | | TED (EU) | buyer-name, winner-name, total-value, procedure-type | | ANAF (RO) | denumire, adresa, scpTVA (VAT payer flag), active status |
When no direct API exists, use Apify CLI with a specific actor or apify/website-content-crawler:
apify call apify/website-content-crawler \
--input '{"startUrls":[{"url":"https://or.justice.cz/ias/ui/rejstrik-$firma?ico=25099345"}],"maxCrawlPages":1}' \
--user-agent apify-awesome-skills/apify-public-registries
Apify-dependent registries:
| Country | Registry | Actor | Trigger |
|---|---|---|---|
| DE | Handelsregister | radeance/handelsregister-api | DE/fetch_all.py keyword <name> |
| UK | Companies House | dhrumil/company-house-scraper | UK/fetch_all.py search <name> |
| PL | eKRS Financials | minute_contest/poland-krs-financial-scraper | PL/fetch_all.py financials |
| CZ | Justice.cz filings | apify/website-content-crawler | Direct via apify CLI |
| RO | ListaFirme.ro | apify/website-content-crawler | RO/fetch_all.py listafirme |
| SE | Allabolag.se | apify/website-content-crawler | Manual (residential proxy needed) |
Note: DE, UK, and RO scripts use mcpc CLI internally (not apify CLI).
CZ (ares, dph, cnb_banks, cnb_oam, justice), SK (orsr, finstat), PL (krs, biala_lista, gus), EU (gleif, esma, ted, eurostat), ESG (ets, climate_trace), RO (anaf)
DE (handelsregister), UK (companies_house), PL (financials via eKRS), CZ (justice.cz sbírka listin via scraping), RO (listafirme.ro)
KVK_API_KEY — register at developers.kvk.nl (REGISTRATION/NL.md)GUS_API_KEY — email [email protected] (test key abcde12345abcde12345 exists but has no real data)GUS_API_KEY is unset — test server returns plausible-looking records (ul. Test-Krucza, Kraków-Podgórze) for any valid NIP. Production key required: email [email protected]. Always inspect first GUS record to confirm prod vs test.@apify session.EU/fetch_all.py eba separately, not as part of normal batch.fetch_all.py without arguments) reads lookup_targets.json from the script's directory — these are per-country ID→name mappings, NOT copies of data/companies.json. For single-company lookups, pass the identifier directly.development
Track whether a brand and its competitors get cited or mentioned across Google AI Overviews, Google AI Mode, ChatGPT Search, Perplexity, Microsoft Copilot, and Google Gemini for a defined set of prompts, on a recurring schedule. Use when user asks to track AI visibility, monitor brand mentions in AI search, track ChatGPT citations, do AI search SEO tracking, GEO tracking (Generative Engine Optimization), AEO tracking (Answer Engine Optimization), monitor Perplexity citations, track AI Overviews mentions, see if their brand shows up in AI search, discover which prompts competitors rank for in AI search, find citation opportunities, or audit a website for AI visibility readiness.
development
Builds a list of verified business emails from Google Maps, Google SERPs, or a user-supplied URL list. Verification happens inside the same Apify run — no third-party verifier needed. Use when user asks to find verified emails, build a leads list, scrape emails from Maps or SERP, verify emails for a URL list, or find an Apollo / Hunter alternative.
development
Find sites ranking for target keywords, score every prospect with Ahrefs domain authority and page-level traffic, identify the strongest pitch angle per row ("links to competitor", "mentions brand without linking", "top-3 SERP", "resource page", "outdated content"), generate brand-voice-matched outreach emails using an outreach-type-aware template (unlinked-mention claim, competitor-link replacement, resource-page inclusion, outdated-content replacement, topical niche-edit), and propose a concrete in-article link placement as three artifacts — the verbatim source sentence, the same sentence rewritten with the link spliced in, or a fully-drafted new insertion if no natural fit exists. Use when user asks to find link building opportunities, prospect link partners, recover unlinked brand mentions, replace competitor links, build a tiered outreach list, or run cold email outreach for SEO link building.
tools
Discover Instagram brand–creator partnerships by chaining Apify Actors. Use when the user asks who collabs with a brand, which brands a creator has done paid posts for, wants to audit an influencer's branded-content history, or wants to scope a brand's sponsorship roster. **Triggers:** - "who collabs with [brand] on Instagram?" - "what brands has [creator] done sponsored posts for?" - "find paid partnerships / branded content for [handle]" - "audit [influencer]'s brand deals" - "show me [brand]'s influencer roster" Works in either direction — brand → creators or creator → brands — and detects direction from the data, so don't ask the user to declare it. Requires Apify MCP tools.