Greece GEMI Company Registry Scraper - Officers, VAT, Accounts
Pricing
from $12.75 / 1,000 results
Greece GEMI Company Registry Scraper - Officers, VAT, Accounts
Search the Greek company registry (GEMI) by name, GEMI number, VAT (AFM) or officer. Get legal form, status, address, share capital, KAD activities, officers with shareholding, branches, published annual accounts with auditors, filings, chamber, phone and email. Export to JSON, CSV or Excel.
Pricing
from $12.75 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
2
Monthly active users
13 days ago
Last modified
Categories
Share
Greece GEMI Company Registry Scraper (Officers, VAT, KAD)
Here is one real result, with every field the actor returns:
{"gemiNumber": "136181601000","companyName": "ALPHA BANK ΥΠΗΡΕΣΙΕΣ ΕΝΗΜΕΡΩΣΕΩΣ ΟΦΕΙΛΕΤΩΝ ΑΝΩΝΥΜΟΣ ΕΤΑΙΡΙΑ","companyNameLatin": "ALPHA BANK DEBT NOTIFICATION SERVICES S.A.","tradeTitle": "ALPHA BANK NOTIFICATION SERVICES","afm": "800683460","legalType": "SA","status": "Active","isSuspended": false,"registeredDate": "23/09/2015","startDate": "23/09/2015","branchType": "Ελληνικής Επιχείρησης","isBranch": false,"isForeignBranch": false,"address": "LEOFOROS ATHINON 77, ATHINA, ATHINAION / KENTRIKOU TOMEA ATHINON, 10447","addressMap": "LEOFOROS ATHINON 77, ATHINA, 10447","city": "ATHINA","postcode": "10447","website": null,"eshop": null,"phone": "2103487232","email": "gtheodosi@alpha.gr","capitalAmount": 350000,"capitalCurrency": "EUR","capitalShares": 3500,"capitalNominalPrice": 100,"capitalType": "Nominal, Ordinary","kadPrimary": "66199903","kadPrimaryLabel": "Debt information services for debtors","kadCodes": ["66199903"],"kadLabels": ["Debt information services for debtors"],"activityPurpose": "Αποκλειστικός σκοπός της εταιρίας είναι η εξώδικη ενημέρωση οφειλετών ... [trimmed]","chamberName": "ATHENS CHAMBER OF COMMERCE & INDUSTRY","chamberEmail": "info@acci.gr","chamberPhone": "2103604815-9","chamberAddress": "Ακαδημίας 7, Αθήνα, 10671","chamberRegistrationNumber": "301949","officersCount": 43,"activeOfficersCount": 5,"officers": ["ALPHA GROUP INVESTMENTS LIMITED - Other","SARANTOS LAGONIKAS - Vice President (AFM 044126626)","PANAGIOTA ANDREOU - President (AFM 129755837)","... 40 more"],"representativesCount": 25,"representatives": ["ANTONIOS GAVRILIS (AFM 039809234)", "KONSTANTINOS CHRYSAFIDIS (AFM 066201328)", "... 23 more"],"modificationsCount": 42,"financialFilingsCount": 10,"documentsCount": 4,"isActive": true,"companyAgeYears": 10.9,"hasContactInfo": true,"primaryOfficer": "ALPHA GROUP INVESTMENTS LIMITED - Other","url": "https://publicity.businessportal.gr/company/136181601000","source": "GEMI (General Commercial Registry, Greece)","observedAt": "2026-08-14T08:17:41.926Z","aiCompanySummary": "ALPHA BANK DEBT NOTIFICATION SERVICES S.A. is an active Greek company that specializes in providing debt information services to debtors. Established in 2015, the company operates under the legal form of a Societe Anonyme (SA).","aiIndustry": "Financial Services","aiSubIndustry": "Debt Collection and Notification Services","aiRiskLevel": "low","aiRiskFlags": []}
officers,representatives,activityPurposeandaiCompanySummaryare long on this record and are trimmed above for readability. In the officer strings the source separator (an em dash) is shown as a hyphen so this page stays em-dash free; the names, roles and AFM values are unchanged. Every value shown is real, unedited run data.
The most complete Greece GEMI registry scraper available. It returns every field the Greek General Commercial Registry exposes (GEMI number, VAT/AFM, legal form, status, share capital, KAD activity codes, statutory officers and legal representatives, chamber membership and public contacts), plus derived fields (isActive, companyAgeYears, hasContactInfo, primaryOfficer) and optional AI KYB add-ons, so you get due-diligence-ready company records.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the live Greek company registry (GEMI) for each query (company name, GEMI number, VAT/AFM or officer name), applies your filters (legal form, status, KAD activity, chamber, listed-only, city, postcode, registration date, last-change date, closure date), and writes one normalized record per company to the run's dataset.
With withDetails on you get the full public record, 100+ fields per company: registered address, share capital history, KAD activity codes, statutory officers as structured objects with their role, VAT (AFM), appointment dates and published shareholding, legal representatives, registered branches, published annual accounts per fiscal year with the audit firm, named auditors and direct links to the iXBRL statements, corporate decisions, supervising-authority filings, the filing history with dates and subjects, status and legal-form history, chamber membership and public phone and email. Missing source values are returned as null, never invented.
Legal form, status and chamber are picked from the registry's own lists in the input form (over the API you pass the matching code, for example "1" for SA and "3" for Active). Activities are free text: write "62.10", the full "62.10.11.01", or a plain-English activity such as "software development", and every matching activity in the registry's list is applied. Anything the registry does not recognise is reported in the run log instead of silently returning an empty result.
Three optional AI add-ons run only on paid Apify plans and only charge when they produce output: aiCompanySummary writes a plain-English KYB profile, aiIndustry maps the company to a normalized industry and sub-industry, and aiRiskFlags summarizes due-diligence risk flags with a risk level.
Quickstart
Open the actor, paste this into the input, and press Run. It looks up Alpha Bank with full details and all three AI KYB add-ons.
{"searchQueries": ["Alpha Bank"],"maxCompanies": 2,"withDetails": true,"language": "en","withAiCompanySummary": true,"withAiIndustry": true,"withAiRiskFlags": true}
Other things you can run straight away:
{ "searchQueries": ["094019245"], "withDetails": true }
{ "searchQueries": ["PAPADOPOULOS"], "searchMode": "person", "maxCompanies": 50 }
{ "kadCodes": ["62.10"], "statuses": ["3"], "registeredFrom": "2024-01-01", "maxCompanies": 500 }
{ "listedOnly": true, "withDetails": true, "maxCompanies": 200 }
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | no | ["coca-cola"] | Company names, GEMI numbers, VAT numbers (AFM) or officer names to look up. Each item runs its own search. Leave empty to browse by filters only. |
searchMode | enum | no | all | What the query is matched against: all, company (names and numbers only) or person (officer lookup, returns every company a matching person is linked to). |
withDetails | boolean | no | true | Fetch the full public record (address, capital, activities, officers with shareholding, representatives, branches, annual accounts, filings, chamber, contacts). Off returns listing-only fields. |
maxCompanies | integer | no | 10 | Maximum companies to collect across the run. |
legalTypes | string[] | no | (all) | Filter by legal form, chosen from the registry's list. Over the API pass the code, for example 1 (SA), 19 (PC), 16 (sole proprietorship). |
statuses | string[] | no | (all) | Filter by status, chosen from the registry's list. Over the API pass the code, for example 3 (Active), 5 (Bankruptcy), 17 (Deletion). |
kadCodes | string[] | no | (all) | Filter by business activity. Accepts a Greek KAD code or prefix (62.10, 62.10.11.01, 47.11) or a plain-English activity (software development). Every matching activity is applied. |
chambers | string[] | no | (all) | Filter by the chamber of commerce the company is registered with, a good proxy for region. Chosen from the registry's list; over the API pass the chamber code. |
listedOnly | boolean | no | false | Return only companies flagged by the registry as listed on the Athens Stock Exchange. |
city | string | no | (any) | Registered city as the registry stores it, for example ATHINA, THESSALONIKI. |
postcode | string | no | (any) | Registered postal code, for example 15125. |
registeredFrom | string | no | (empty) | Only companies registered on or after this date. DD/MM/YYYY or YYYY-MM-DD. |
registeredTo | string | no | (empty) | Only companies registered on or before this date. |
lastChangedFrom | string | no | (empty) | Only companies with a registry change filed on or after this date. Use it to pull companies that recently moved, changed officers or changed capital. |
lastChangedTo | string | no | (empty) | Only companies with a registry change filed on or before this date. |
closedFrom | string | no | (empty) | Only companies deleted or closed on or after this date. |
closedTo | string | no | (empty) | Only companies deleted or closed on or before this date. |
personName | string | no | (empty) | Shortcut for an officer lookup. Same as putting the name in searchQueries with searchMode set to person. |
maxOfficers | integer | no | 100 | How many officers and representatives to return per company. Large companies have hundreds of historical entries. |
maxFilings | integer | no | 50 | How many filing, decision and authority entries to return per company, newest first. 0 keeps only the counts and the latest-filing summary. |
language | enum | no | en | Language for registry labels. One of en, el. |
withAiCompanySummary | boolean | no | false | Paid add-on. Plain-English KYB profile of each company. Requires a paid plan. |
withAiIndustry | boolean | no | false | Paid add-on. Normalized industry and sub-industry classification. Requires a paid plan. |
withAiRiskFlags | boolean | no | false | Paid add-on. Due-diligence risk flags with a risk level. Requires a paid plan. |
Date ranges need both ends. If you set only one, the other is filled in automatically (today, or 01/01/1900) and the choice is written to the run log.
Output reference
One dataset item per company, 106 fields. Types: string, number, boolean, string[], object[], or null when the source value is absent. Detail fields require withDetails; with it off they are present but null, so the dataset stays rectangular for CSV and Excel.
| Field | Type | Description |
|---|---|---|
gemiNumber | string | GEMI registry number (unique per company). |
companyName | string | Registered company name (Greek). |
companyNameLatin | string | Latin-script company name, or null. |
tradeTitle | string | Main trade title or brand name, or null. |
tradeTitles | string[] | Every registered trading title. |
tradeTitlesLatin | string[] | Trading titles in Latin script. |
afm | string | VAT number (AFM). |
legalType | string | Legal form, for example SA, PC, SOLE. |
status | string | Company status, for example Active. |
isSuspended | boolean | true if the company is suspended. |
registeredDate | string | Registration date (DD/MM/YYYY). |
registeredDateIso | string | Registration date in YYYY-MM-DD form. |
startDate | string | Business start date (DD/MM/YYYY). |
startDateIso | string | Business start date in YYYY-MM-DD form. |
branchType | string | Branch type label. |
isBranch | boolean | true if this record is a branch. |
isForeignBranch | boolean | true if a foreign-company branch. |
parentCompanyName | string | Parent company name when this record is a branch. |
parentCompanyId | string | Parent company GEMI number when this record is a branch. |
address | string | Full registered address. |
addressMap | string | Simplified address for mapping. |
city | string | Registered city. |
postcode | string | Registered postal code. |
website | string | Company website, or null. |
websiteDomain | string | Bare domain of the website, ready for enrichment joins. |
eshop | string | E-shop URL, or null. |
phone | string | Public phone, or null. |
email | string | Public email, or null. |
emailDomain | string | Domain part of the public email. |
capitalAmount | number | Share capital amount. |
capitalCurrency | string | Currency of the share capital. |
capitalShares | number | Number of shares. |
capitalNominalPrice | number | Nominal price per share. |
capitalType | string | Capital type description. |
capitals | object[] | Every capital record on file: type, amount, shares, nominalPrice, currency. |
kadPrimary | string | Primary KAD activity code. |
kadPrimaryLabel | string | Label for the primary KAD code. |
kadCodes | string[] | All KAD activity codes. |
kadLabels | string[] | Labels for the KAD codes. |
kadCount | number | Number of registered activities. |
activityPurpose | string | Full statutory activity purpose text. |
chamberName | string | Chamber of commerce name. |
chamberDepartment | string | Department within the chamber. |
chamberEmail | string | Chamber email. |
chamberPhone | string | Chamber phone. |
chamberAddress | string | Chamber address. |
chamberContactUrl | string | Chamber contact URL. |
chamberRegistrationNumber | string | Chamber registration number. |
chamberRegisteredDate | string | Date the company joined the chamber. |
officersCount | number | Total officers on record (all time). |
activeOfficersCount | number | Number of currently active officers. |
officers | string[] | Officer entries with role and AFM where present. |
officersDetailed | object[] | Officers as objects: name, role, afm, isActive, isCompany, sharePercent, appointedFrom, appointedFromIso, appointedTo, electedOn, recordType. |
shareholders | object[] | Officers with a published shareholding, largest first: name, afm, sharePercent, isCompany, isActive. |
largestShareholder | string | Name of the largest published shareholder. |
largestShareholderPercent | number | Published share of the largest shareholder. |
representativesCount | number | Total legal representatives on record. |
representatives | string[] | Legal representative entries with AFM where present. |
representativesDetailed | object[] | Representatives as objects: name, afm, isActive, activeFrom, activeTo. |
branchesCount | number | Number of registered branches. |
branches | object[] | Branches: gemiNumber, name, address, incorporatedOn, url. |
financialFilingsCount | number | Number of financial reporting periods on record. |
financials | object[] | Annual accounts per year: period, fiscalYear, filedAt, ixbrlUrl, statementFileUrl, auditFirm, auditFirmGemiNumber, auditors, isPublished. |
latestFinancialPeriod | string | Reference period of the newest published accounts. |
latestFinancialYear | number | Fiscal year of the newest published accounts. |
latestFinancialIxbrlUrl | string | Direct link to the newest published iXBRL statements. |
latestAuditFirm | string | Audit firm on the newest published accounts. |
auditorNames | string[] | Named statutory auditors across the published accounts. |
hasAuditedAccounts | boolean | true when at least one set of accounts is published. |
modificationsCount | number | Number of registry filings on record. |
filings | object[] | Filing history, newest first: date, dateIso, registrationDate, subject, kak, status. |
lastFilingDate | string | Date of the most recent filing. |
lastFilingDateIso | string | Most recent filing date in YYYY-MM-DD form. |
lastFilingSubject | string | Subject of the most recent filing. |
firstFilingDate | string | Date of the oldest filing on record. |
daysSinceLastFiling | number | Derived: days since the most recent filing. |
decisionsCount | number | Number of published corporate decisions. |
decisions | object[] | Corporate decisions: depositDate, depositDateIso, assemblyDate, bodyType, subject, documentUrl. |
lastDecisionDate | string | Deposit date of the most recent decision. |
lastDecisionType | string | Body that took the most recent decision. |
authorityFilingsCount | number | Number of supervising-authority filings. |
authorityFilings | object[] | Authority filings: date, decisionDate, subject, authority, documentUrl. |
statusHistory | object[] | Status history: date, dateIso, status. |
statusSince | string | Date of the earliest recorded status. |
legalFormHistory | object[] | Legal-form history: date, dateIso, legalForm. |
legalFormSince | string | Date of the earliest recorded legal form. |
suspensions | object[] | Recorded suspension periods. |
incorporationDocumentsCount | number | Number of incorporation and statute documents on file. |
incorporationDocuments | object[] | Incorporation documents: filedOn, filedOnIso, kak, status, documentUrl. |
documentsCount | number | Number of official certificates the registry offers. |
availableCertificates | object[] | Certificates on offer: title and costEur. |
isActive | boolean | Derived: true when the status is active. |
companyAgeYears | number | Derived: company age in years from registration. |
hasContactInfo | boolean | Derived: true when a public phone or email exists. |
hasFinancials | boolean | Derived: true when published accounts are on record. |
primaryOfficer | string | Derived: the lead officer entry. |
detailFetched | boolean | true when the full detail record was retrieved for this company. |
url | string | Public GEMI business portal URL. |
source | string | Always GEMI (General Commercial Registry, Greece). |
aiCompanySummary | string | AI KYB profile (add-on), else null. |
aiIndustry | string | AI normalized industry (add-on), else null. |
aiSubIndustry | string | AI normalized sub-industry (add-on), else null. |
aiRiskLevel | string | AI risk level low, medium or high (add-on), else null. |
aiRiskFlags | string[] | AI due-diligence risk flags (add-on), else null. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. When the registry cannot be reached, a single item with a populated error field is written instead and nothing is charged. |
Example output record
Real record from a live run (input {"searchQueries":["Alpha Bank"],"withDetails":true,"maxCompanies":2}), trimmed to a readable subset of the 106 fields. Values are unchanged:
{"gemiNumber": "159029160000","companyName": "ΑΛΦΑ ΤΡΑΠΕΖΑ ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ","companyNameLatin": "ALFA TRAPEZA ANONYMI ETAIRIA","afm": "996807331","legalType": "SA","status": "Active","registeredDate": "16/04/2021","city": "ATHINA","postcode": "10252","phone": "2103264265","email": "konstantinos.savvakis@alpha.gr","capitalAmount": 654310561.35,"capitalCurrency": "EUR","kadPrimary": "64191204","kadPrimaryLabel": "Banking services","kadCount": 3,"chamberName": "D/nsi Etaireion (Geniki Grammateia Emporiou & Prostasias Katanaloti)","officersCount": 135,"activeOfficersCount": 0,"primaryOfficer": "SPYRIDON FILARETOS - Executive Member (AFM 027972974)","officersDetailed": [{"name": "SPYRIDON FILARETOS","role": "Executive Member","afm": "027972974","isActive": false,"isCompany": false,"sharePercent": 0,"appointedFrom": "01/01/2022","appointedFromIso": "2022-01-01","appointedTo": "16/12/2021","electedOn": "16/04/2021","recordType": "board_member"}],"financialFilingsCount": 6,"latestFinancialYear": 2025,"latestAuditFirm": null,"auditorNames": ["DIMITRIOS KOUTSOS KOUTSOPOULOS","FOTEINI GIANNOPOULOU"],"hasAuditedAccounts": true,"lastFilingDate": "02/09/2026","lastFilingSubject": "Provision of 10 days for disclosure of related party transactions","daysSinceLastFiling": 4,"decisionsCount": 2,"lastDecisionType": "Board of Directors","statusSince": "16/04/2021","isActive": true,"companyAgeYears": 5.4,"url": "https://publicity.businessportal.gr/company/159029160000","observedAt": "2026-09-06T21:28:17.434Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~greece-gemi-companies-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["Alpha Bank"],"withDetails":true,"maxCompanies":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~greece-gemi-companies-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"city":"ATHINA","kadCodes":["6201"],"maxCompanies":100,"withDetails":true}'
Apify CLI:
apify call scrapers_lat/greece-gemi-companies-scraper \--input '{"searchQueries":["800683460"],"withDetails":true}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per company returned. The
resultevent applies to listing-level records and the richerdetailsevent whenwithDetailsis on. See the pricing tab for current per-result prices. - Add-ons. The three AI KYB add-ons are priced separately and charge only when they produce output.
- No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 companies per run. Upgrade for higher
maxCompanies.
FAQ and troubleshooting
A run returned 0 companies. Why?
The query and filters matched nothing in GEMI. Check the spelling, try the GEMI number or AFM directly, or loosen filters such as city or legalTypes. Zero-result runs are not charged.
How do I look up a company by VAT number?
Put the AFM (VAT number) in searchQueries, for example ["800683460"].
Why are officers and capital null?
withDetails was off, so only listing-level fields are returned. Turn on withDetails to fetch the full record.
Can I find every company an officer is linked to?
Yes. Put the name in searchQueries and set searchMode to person (or use the personName shortcut). The run returns every company that person is linked to as a director, partner or representative.
Can I get published financial statements?
Yes, for companies that file them. Each record carries financials with one entry per fiscal year, including the audit firm, the named auditors and direct links to the iXBRL statements and the filed statement file. hasAuditedAccounts tells you at a glance whether anything is published.
How do I filter by industry?
Use kadCodes. It accepts a Greek KAD code or prefix such as 62.10 or the full 62.10.11.01, and also plain-English activity text such as software development. The filter matches any of a company's activities, not just its primary one. Values the registry does not recognise are named in the run log.
How do I find companies that changed something recently?
Set lastChangedFrom (and optionally lastChangedTo). That range matches the date a change was filed with the registry, which is how you catch address changes, new officers and capital changes.
A filter seems to be ignored.
Legal form, status and chamber come from fixed lists, so over the API they take the registry's codes (1 for SA, 3 for Active); the input form shows the names. Activities take a KAD code, a code prefix or plain-English text. Date ranges need both ends; set one and the actor fills in the other and says so in the log.
Why did the AI fields not appear?
The AI add-ons require a paid Apify plan and are off by default. Enable withAiCompanySummary, withAiIndustry or withAiRiskFlags on a paid plan. They charge only when output is produced.
Is this an official GEMI tool? No. This actor is independent and not affiliated with GEMI or the Greek government. It reads only data that is publicly available through the GEMI business portal.
Related scrapers
- Bulgaria Commercial Register Scraper: Bulgarian company records.
- Romania ONRC Companies Scraper: Romanian company registry records.
- Belgium KBO Companies Scraper: Belgian company records.
- Czech ARES Companies Scraper: Czech company registry records.
- GLEIF LEI Company Records Scraper: Global Legal Entity Identifier records.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with GEMI or the Greek government. Accesses only publicly available Greek company registry data.
