Greek Company Data
Look up a Greek company in GEMI by registry number or tax ID, including identity, status, address and directors where available.
Example
{
"afm": "094014201",
"status": "active",
"address": "ΠΛΑΤΕΙΑ ΠΑΡΚΟΥ, 35100 ΛΑΜΙΑ, ΛΑΜΙΕΩΝ / ΦΘΙΩΤΙΔΑΣ",
"directors": [],
"is_branch": true,
"legal_form": "ΑΕ",
"legal_name": "ΕΘΝΙΚΗ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ Α.Ε.",
"org_number": "237954001",
"vat_number": "EL094014201",
"company_name": "ΕΘΝΙΚΗ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ Α.Ε.",
"business_type": "ΑΕ",
"industry_code": null,
"tier_2_available": true,
"ubo_availability": "unavailable_no_registry",
"date_incorporated": "1941-01-01",
"registration_date": "1941-01-01",
"registered_address": "ΠΛΑΤΕΙΑ ΠΑΡΚΟΥ, 35100 ΛΑΜΙΑ, ΛΑΜΙΕΩΝ / ΦΘΙΩΤΙΔΑΣ",
"industry_description": null,
"primary_registration_id": "237954001",
"tier_2_available_reason": "GEMI exposes legal representatives via representation array; signing_authority not currently extracted",
"ubo_availability_reason": "Programmatic UBO access not yet operational at v1; verification pending public-source confirmation"
} Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
afm | string | No | Greek tax ID (AFM, 9 digits) — used as fallback when GEMI number is not known |
gemi_number | string | No | Greek GEMI registry number (6-14 digits) |
Output fields
How reliably each field appears in a successful answer.
| Field | Type | Appears |
|---|---|---|
afm | string | Usually (present for most inputs) |
status | string | Always (present in every successful answer) |
address | string | Usually (present for most inputs) |
directors | array | Usually (present for most inputs) |
is_branch | boolean | Always (present in every successful answer) |
org_number | string | Always (present in every successful answer) |
vat_number | string | Usually (present for most inputs) |
company_name | string | Always (present in every successful answer) |
business_type | string | Always (present in every successful answer) |
industry_code | string | Usually (present for most inputs) |
registration_date | string | Usually (present for most inputs) |
industry_description | string | Usually (present for most inputs) |
How to call it
The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.
# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"capability_slug": "greek-company-data",
"inputs": {
"gemi_number": "296601000"
},
"max_price_cents": 5
}' {
"tool": "strale_execute",
"arguments": {
"slug": "greek-company-data",
"inputs": {
"gemi_number": "296601000"
},
"max_price_cents": 5
}
} import { Strale } from "straleio";
const strale = new Strale({ apiKey: process.env.STRALE_API_KEY! });
const result = await strale.do({
capability_slug: "greek-company-data",
inputs: {
"gemi_number": "296601000"
},
max_price_cents: 5,
}); import os
from straleio import Strale, DoRequest
strale = Strale(api_key=os.environ["STRALE_API_KEY"])
result = strale.do(DoRequest(
capability_slug="greek-company-data",
inputs={
"gemi_number": "296601000",
},
max_price_cents=5,
)) # No account. The first request answers 402 with the price in USDC;
# an x402 client pays it from your wallet and repeats the request.
curl -i -X POST https://api.strale.io/x402/v2/greek-company-data \
-H 'Content-Type: application/json' \
-d '{
"gemi_number": "296601000"
}' Limitations
Official registry data access
Data comes from the official registry's public API under its open-data terms (https://opendata.businessportal.gr/license/); results carry the registry as their source.
Registry status interpretation
Known GEMI status descriptions map to active, inactive, dissolved, bankrupt or liquidation; unrecognised descriptions are preserved and missing descriptions return unknown. These mappings are not independently confirmed against live GEMI responses.
GEMI rate limit is 8 requests per minute
The GEMI Open Data API enforces a maximum of 8 requests per minute per API key. Requests exceeding this limit return HTTP 429.
What to do instead: Space requests to stay within 8 per minute.
AFM tax identifiers can be missing
When AFM is missing the derived vat_number is null; vat-validate downstream steps will soft-fail for those entities.
What to do instead: Provide the AFM as input directly when known, or use a separate VAT validation source.
Branches and main entities are both returned by GEMI
GEMI includes branch records (is_branch=true) alongside main-entity records. Some KYB use cases want the parent only.
What to do instead: Check the is_branch field before using the record as the principal counterparty.
Bundled checks that include it
- KYB Essentials — Greece €1.50
- KYB Complete — Greece €2.50
- Invoice Verify — Greece €2.50
Related tools
- Australian Company Data €0.05
- Austrian Company Data €0.05
- Belgian Company Data €0.05
- Brazilian Company Data €0.05
- Canadian Company Data €0.80
- Company Enrichment €0.50