API overview
The General Commercial Registry of Greece (GEMI, Γενικό Εμπορικό Μητρώο) is operated by the Central Union of Chambers of Greece (KEEE) under the Ministry of Development. The official machine-readable access point is the GEMI Open Data API at opendata-api.businessportal.gr, documented with a live Swagger interface at opendata-api.businessportal.gr/opendata/docs/. Unlike the older undocumented endpoint that once sat behind the public search portal, this API is published, versioned through its OpenAPI specification, and gated by a free API key.
GEMI covers all commercial entities legally required to register in Greece: societes anonymes (SA/AE), limited liability companies (EPE/LLC), private companies (IKE), general and limited partnerships (OE/EE), individual merchants, and branches of foreign companies. The API exposes company publicity data: GEMI number, business name, tax number (AFM), legal form, status, registration date, and the registry’s published decision documents, announcements, and meeting minutes.
Financial statements are not served as structured data. They appear as PDF gazette publications referenced from a company’s record. UBO data is collected by GEMI but is not part of the open-data endpoints.
Migration note (2026-06-23): the previous version of this entry documented
publicity.businessportal.gr/api, a reverse-engineered endpoint behind the human search portal. That endpoint is no longer usable for integration (the bare path returns HTTP 404 and its former sub-paths return 500/400). Use the official Open Data API documented here instead.
Endpoint reference
Base URL: https://opendata-api.businessportal.gr
Interactive docs: https://opendata-api.businessportal.gr/opendata/docs/
The Swagger UI is the authoritative source for exact paths, parameters, and response schemas, and it includes a try-it-out console. The API is organised into three documented groups:
| Group | Purpose | Typical input |
|---|---|---|
| Business Share Data | Returns the publicity elements of one enterprise: identity, status, registration date, decision documents, announcements, and meeting minutes | GEMI number |
| Search | Returns a summary list of matching enterprises with their GEMI numbers, for follow-up detail queries | GEMI number, tax number (AFM), business name fragment, chamber, activity code (KAD), status, prefecture, or municipality |
| Parametric Files | Returns reference data used to interpret and filter the other endpoints | none, or a category selector |
The parametric files cover local GEMI offices, prefectures, municipalities, business statuses, legal entity types, organ types, and document types. Resolve these first and cache them, then use their codes as filters in the Search endpoint. Confirm the exact path names and query parameters against the Swagger specification before coding against them, because the open-data programme revises them between releases.
Authentication
The Open Data API requires a personal API key. There is no anonymous access tier for production use.
- Register for access at opendata.businessportal.gr/register/ and follow the access-request procedure. The key is issued to a named account.
- The documentation console at
/opendata/docs/accepts a public demo key,api-docs-key, for trying endpoints. Treat it as read-only and rate-limited; it is not a production credential. - Supply your key through the scheme shown in the Swagger “Authorize” dialog. Confirm whether the key is passed as a request header or a query parameter in that dialog before building your client, and never embed a production key in client-side code.
A restricted professional tier (pending filings and internal registry notes) remains available to Greek lawyers and notaries through a separate credentialed portal and a qualified electronic certificate. That tier is not part of the open-data programme and is not reachable by foreign developers without a licensed Greek professional.
Rate limits and quotas
GEMI does not publish a fixed daily quota for the Open Data API. The documentation states that the testing environment is capped at a limited number of calls per IP address, and production limits are governed by the terms attached to your issued key.
Plan for IP-level throttling under sustained polling. Implement exponential back-off starting at 5 seconds, and space batch requests rather than firing them in parallel. The portal undergoes scheduled maintenance on Saturday nights (Greek time, EET/EEST); build retry logic with a circuit breaker and prefer Sunday-morning retries over treating Saturday-night failures as hard errors.
Sample request
The example below shows the shape of an authenticated call. Replace the endpoint path and the key-passing scheme with the exact values from the Swagger specification, and substitute your own key for the demo key.
# Resolve one enterprise's publicity data by GEMI number.
# Confirm the exact path and the api_key location (header vs query) in the Swagger docs.
curl -s \
-H "Accept: application/json" \
"https://opendata-api.businessportal.gr/opendata/<business-share-data-path>/000223001000?api_key=api-docs-key" \
| python3 -m json.tool
For a name search that returns candidate GEMI numbers, call the Search group with a name (or equivalent) parameter, then pass each returned GEMI number back into the Business Share Data group for full detail. The server accepts requests over HTTPS only.
Available data fields
- GEMI number (
arithmos_gemi) - Business name (Greek script) and commercial title
- Tax number (AFM), when published
- Legal form
- Status: active, in liquidation, struck off
- Registered seat: prefecture, municipality
- Date of incorporation
- Decision documents, announcements, and meeting minutes (publicity record)
- Official gazette publication references
Known limitations and edge cases
API key now mandatory. The earlier open, keyless endpoint is retired. Every integration must register for a key and handle its rotation. Budget for the registration step before development starts.
Swagger is the source of truth for paths. Exact endpoint paths and response schemas are served by the JavaScript Swagger UI and are revised between open-data releases. Do not hard-code paths inferred from third-party write-ups, including this one; read them from the live specification.
Greek field names. Response fields are Greek or Greek-transliterated. There is no English-language field-name option. Maintain a mapping table in your integration code.
No structured financials. Financial statement data exists only as PDF links to the official gazette (FEK). Parsing structured figures requires OCR and Greek-language document understanding.
AFM availability. The Greek tax number is present for many records but redacted for some based on the entity’s privacy elections. Do not assume it is always returned.
Outage pattern. Saturday-night maintenance (Greek time) is routine. Treat those windows as expected downtime, not errors.
Commercial alternatives
GEMI is the authoritative source, but the open-data limitations (Greek-only fields, no financials as JSON, key-gated access, IP throttling) make it heavy for production pipelines without preprocessing.
Commercial data providers that normalise GEMI data into English-language JSON with structured financials include Moody’s Orbis, Dun and Bradstreet, and Creditsafe. Pricing for Greek company profiles via these vendors typically ranges from USD 15 to USD 80 per profile depending on data depth and volume tier. See the corresponding Greece company registry guide for a full registry overview.
Last verified: 2026-06-23. The GEMI Open Data API is governed by the terms attached to your issued key and may change between open-data releases. Test against the live Swagger specification before production deployment.