Greece GEMI Company Registry Scraper - Officers, VAT, Accounts avatar

Greece GEMI Company Registry Scraper - Officers, VAT, Accounts

Pricing

from $12.75 / 1,000 results

Go to Apify Store
Greece GEMI Company Registry Scraper - Officers, VAT, Accounts

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

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

13 days ago

Last modified

Share

Greece GEMI Company Registry Scraper (Officers, VAT, KAD)

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, activityPurpose and aiCompanySummary are 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

Apify Coverage Output Billing

Table of contents

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

FieldTypeRequiredDefaultDescription
searchQueriesstring[]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.
searchModeenumnoallWhat the query is matched against: all, company (names and numbers only) or person (officer lookup, returns every company a matching person is linked to).
withDetailsbooleannotrueFetch the full public record (address, capital, activities, officers with shareholding, representatives, branches, annual accounts, filings, chamber, contacts). Off returns listing-only fields.
maxCompaniesintegerno10Maximum companies to collect across the run.
legalTypesstring[]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).
statusesstring[]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).
kadCodesstring[]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.
chambersstring[]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.
listedOnlybooleannofalseReturn only companies flagged by the registry as listed on the Athens Stock Exchange.
citystringno(any)Registered city as the registry stores it, for example ATHINA, THESSALONIKI.
postcodestringno(any)Registered postal code, for example 15125.
registeredFromstringno(empty)Only companies registered on or after this date. DD/MM/YYYY or YYYY-MM-DD.
registeredTostringno(empty)Only companies registered on or before this date.
lastChangedFromstringno(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.
lastChangedTostringno(empty)Only companies with a registry change filed on or before this date.
closedFromstringno(empty)Only companies deleted or closed on or after this date.
closedTostringno(empty)Only companies deleted or closed on or before this date.
personNamestringno(empty)Shortcut for an officer lookup. Same as putting the name in searchQueries with searchMode set to person.
maxOfficersintegerno100How many officers and representatives to return per company. Large companies have hundreds of historical entries.
maxFilingsintegerno50How many filing, decision and authority entries to return per company, newest first. 0 keeps only the counts and the latest-filing summary.
languageenumnoenLanguage for registry labels. One of en, el.
withAiCompanySummarybooleannofalsePaid add-on. Plain-English KYB profile of each company. Requires a paid plan.
withAiIndustrybooleannofalsePaid add-on. Normalized industry and sub-industry classification. Requires a paid plan.
withAiRiskFlagsbooleannofalsePaid 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.

FieldTypeDescription
gemiNumberstringGEMI registry number (unique per company).
companyNamestringRegistered company name (Greek).
companyNameLatinstringLatin-script company name, or null.
tradeTitlestringMain trade title or brand name, or null.
tradeTitlesstring[]Every registered trading title.
tradeTitlesLatinstring[]Trading titles in Latin script.
afmstringVAT number (AFM).
legalTypestringLegal form, for example SA, PC, SOLE.
statusstringCompany status, for example Active.
isSuspendedbooleantrue if the company is suspended.
registeredDatestringRegistration date (DD/MM/YYYY).
registeredDateIsostringRegistration date in YYYY-MM-DD form.
startDatestringBusiness start date (DD/MM/YYYY).
startDateIsostringBusiness start date in YYYY-MM-DD form.
branchTypestringBranch type label.
isBranchbooleantrue if this record is a branch.
isForeignBranchbooleantrue if a foreign-company branch.
parentCompanyNamestringParent company name when this record is a branch.
parentCompanyIdstringParent company GEMI number when this record is a branch.
addressstringFull registered address.
addressMapstringSimplified address for mapping.
citystringRegistered city.
postcodestringRegistered postal code.
websitestringCompany website, or null.
websiteDomainstringBare domain of the website, ready for enrichment joins.
eshopstringE-shop URL, or null.
phonestringPublic phone, or null.
emailstringPublic email, or null.
emailDomainstringDomain part of the public email.
capitalAmountnumberShare capital amount.
capitalCurrencystringCurrency of the share capital.
capitalSharesnumberNumber of shares.
capitalNominalPricenumberNominal price per share.
capitalTypestringCapital type description.
capitalsobject[]Every capital record on file: type, amount, shares, nominalPrice, currency.
kadPrimarystringPrimary KAD activity code.
kadPrimaryLabelstringLabel for the primary KAD code.
kadCodesstring[]All KAD activity codes.
kadLabelsstring[]Labels for the KAD codes.
kadCountnumberNumber of registered activities.
activityPurposestringFull statutory activity purpose text.
chamberNamestringChamber of commerce name.
chamberDepartmentstringDepartment within the chamber.
chamberEmailstringChamber email.
chamberPhonestringChamber phone.
chamberAddressstringChamber address.
chamberContactUrlstringChamber contact URL.
chamberRegistrationNumberstringChamber registration number.
chamberRegisteredDatestringDate the company joined the chamber.
officersCountnumberTotal officers on record (all time).
activeOfficersCountnumberNumber of currently active officers.
officersstring[]Officer entries with role and AFM where present.
officersDetailedobject[]Officers as objects: name, role, afm, isActive, isCompany, sharePercent, appointedFrom, appointedFromIso, appointedTo, electedOn, recordType.
shareholdersobject[]Officers with a published shareholding, largest first: name, afm, sharePercent, isCompany, isActive.
largestShareholderstringName of the largest published shareholder.
largestShareholderPercentnumberPublished share of the largest shareholder.
representativesCountnumberTotal legal representatives on record.
representativesstring[]Legal representative entries with AFM where present.
representativesDetailedobject[]Representatives as objects: name, afm, isActive, activeFrom, activeTo.
branchesCountnumberNumber of registered branches.
branchesobject[]Branches: gemiNumber, name, address, incorporatedOn, url.
financialFilingsCountnumberNumber of financial reporting periods on record.
financialsobject[]Annual accounts per year: period, fiscalYear, filedAt, ixbrlUrl, statementFileUrl, auditFirm, auditFirmGemiNumber, auditors, isPublished.
latestFinancialPeriodstringReference period of the newest published accounts.
latestFinancialYearnumberFiscal year of the newest published accounts.
latestFinancialIxbrlUrlstringDirect link to the newest published iXBRL statements.
latestAuditFirmstringAudit firm on the newest published accounts.
auditorNamesstring[]Named statutory auditors across the published accounts.
hasAuditedAccountsbooleantrue when at least one set of accounts is published.
modificationsCountnumberNumber of registry filings on record.
filingsobject[]Filing history, newest first: date, dateIso, registrationDate, subject, kak, status.
lastFilingDatestringDate of the most recent filing.
lastFilingDateIsostringMost recent filing date in YYYY-MM-DD form.
lastFilingSubjectstringSubject of the most recent filing.
firstFilingDatestringDate of the oldest filing on record.
daysSinceLastFilingnumberDerived: days since the most recent filing.
decisionsCountnumberNumber of published corporate decisions.
decisionsobject[]Corporate decisions: depositDate, depositDateIso, assemblyDate, bodyType, subject, documentUrl.
lastDecisionDatestringDeposit date of the most recent decision.
lastDecisionTypestringBody that took the most recent decision.
authorityFilingsCountnumberNumber of supervising-authority filings.
authorityFilingsobject[]Authority filings: date, decisionDate, subject, authority, documentUrl.
statusHistoryobject[]Status history: date, dateIso, status.
statusSincestringDate of the earliest recorded status.
legalFormHistoryobject[]Legal-form history: date, dateIso, legalForm.
legalFormSincestringDate of the earliest recorded legal form.
suspensionsobject[]Recorded suspension periods.
incorporationDocumentsCountnumberNumber of incorporation and statute documents on file.
incorporationDocumentsobject[]Incorporation documents: filedOn, filedOnIso, kak, status, documentUrl.
documentsCountnumberNumber of official certificates the registry offers.
availableCertificatesobject[]Certificates on offer: title and costEur.
isActivebooleanDerived: true when the status is active.
companyAgeYearsnumberDerived: company age in years from registration.
hasContactInfobooleanDerived: true when a public phone or email exists.
hasFinancialsbooleanDerived: true when published accounts are on record.
primaryOfficerstringDerived: the lead officer entry.
detailFetchedbooleantrue when the full detail record was retrieved for this company.
urlstringPublic GEMI business portal URL.
sourcestringAlways GEMI (General Commercial Registry, Greece).
aiCompanySummarystringAI KYB profile (add-on), else null.
aiIndustrystringAI normalized industry (add-on), else null.
aiSubIndustrystringAI normalized sub-industry (add-on), else null.
aiRiskLevelstringAI risk level low, medium or high (add-on), else null.
aiRiskFlagsstring[]AI due-diligence risk flags (add-on), else null.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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 result event applies to listing-level records and the richer details event when withDetails is 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 error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on 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.

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.