Spain Company Directory Scraper (CIF, CNAE, Address & Phone) avatar

Spain Company Directory Scraper (CIF, CNAE, Address & Phone)

Pricing

from $12.75 / 1,000 results

Go to Apify Store
Spain Company Directory Scraper (CIF, CNAE, Address & Phone)

Spain Company Directory Scraper (CIF, CNAE, Address & Phone)

Look up Spanish companies by name and get CIF/NIF, CNAE activity code, full registered address, phone, website, legal form, employees and founding date. 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

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Spain Company Directory Scraper (CIF, CNAE, Address & Phone)

Spain Company Directory Scraper (CIF, CNAE, Address & Phone)

Here is one real result, with every field the actor returns (the directors array is trimmed here to 3 of 10 entries with ...; live records return every director. Director names are masked at the source):

{
"companyName": "ACCIONA, SA",
"legalName": "ACCIONA, SA",
"cif": "A08001851",
"website": "http://www.acciona.com/es",
"phone": "916632850",
"phones": [
"916632850"
],
"email": null,
"activity": "Sociedades de cartera (holdings)",
"cnaeCode": "6421",
"cnaeDescription": "Actividades de sociedades holding",
"legalForm": "Sociedad anónima",
"street": "Avenida Gran Via De Hortaleza, 3",
"city": "Madrid",
"province": "Madrid",
"postalCode": "28033",
"country": "España",
"employees": 176,
"foundingDate": "16/06/1916",
"capitalSocial": 54856653,
"capitalSocialText": "54.856.653 €",
"listedOnStockExchange": true,
"lastYearResult": "Positivo",
"nationalRanking": 542,
"lastBormeDate": "04/08/2026",
"lastBormeAct": "Reelecciones",
"directors": [
{ "role": "Presidente", "name": "JOSE MANUEL E...", "appointedDate": "22/10/2009" },
{ "role": "Vicepresidente", "name": "JUAN IGNACIO E...", "appointedDate": "27/06/2018" },
{ "role": "Consejero", "name": "MARIA S...", "appointedDate": "28/06/2023" }
],
"queryName": "Acciona",
"listingUrl": "https://www.einforma.com/informacion-empresa/acciona",
"source": "einforma",
"observedAt": "2026-08-10T14:30:05.672Z",
"error": null
}

The most complete Spain company directory scraper available. It returns every field the public company directory exposes per business, including CIF, CNAE activity code, legal form, full address, phones, employees, founding date, share capital, stock listing, national ranking, latest BORME act and the board of directors, plus an optional contact enrichment add-on to find a business email.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor looks up each Spanish company name you pass in a public company directory, resolves the best match, and writes one normalized record per company to the run's dataset. Each record carries the tax id (CIF), legal form, CNAE activity code and description, full postal address, phones, website, employee count, founding date, share capital, whether the company is listed on a stock exchange, its national ranking, the latest BORME act and date, and the board of directors as structured entries.

An optional paid contact enrichment add-on can look up a public business email and contact person when the directory record has no email. Director names are masked by the source directory.

Quickstart

Open the actor, paste this into the input, and press Run. It looks up four large Spanish companies and returns their full directory records.

{
"companyNames": ["Mercadona", "Inditex", "Acciona", "Cementos Molins"],
"maxCompanies": 10,
"enrichContacts": false
}

Provide one or more names in companyNames. Full or partial names both work; the actor resolves the best match for each.

Input reference

FieldTypeRequiredDefaultDescription
companyNamesstring[]yes(none)One or more Spanish company names to look up, for example Mercadona, Inditex. Full or partial names both work; the actor resolves the best match for each.
maxCompaniesintegerno10Maximum number of company records to return across all lookups. Free Apify plans are capped at 10 per run.
enrichContactsbooleannofalseOptional paid add-on, off by default. For each result without an email, attempt to find a public business contact email and a contact person's name. Billed per attempt, plus an extra charge only when an email is found.
enrichContactsMaxintegerno50Cap how many results the add-on tries to enrich. Free Apify accounts are capped at 3.

Output reference

One dataset item per company. Types: string, number, boolean, string[], object[], or null when the source value is absent. The enriched* fields are populated only when the contact enrichment add-on is enabled.

FieldTypeDescription
companyNamestringCompany name as listed.
legalNamestringRegistered legal name.
cifstringSpanish tax identification code (CIF).
websitestringCompany website, or null.
phonestringPrimary phone number, or null.
phonesstring[]All phone numbers found. Empty array when none.
emailstringPublic email from the directory, or null.
activitystringBusiness activity description.
cnaeCodestringCNAE economic activity code.
cnaeDescriptionstringCNAE activity description.
legalFormstringLegal form, for example Sociedad anónima.
streetstringStreet address.
citystringCity.
provincestringProvince.
postalCodestringPostal code.
countrystringCountry, normally España.
employeesnumberReported employee count, or null.
foundingDatestringFounding date (DD/MM/YYYY), or null.
capitalSocialnumberShare capital as a number, or null.
capitalSocialTextstringShare capital as printed, with currency symbol.
listedOnStockExchangebooleantrue when the company is listed on a stock exchange.
lastYearResultstringLast-year result indicator, for example Positivo.
nationalRankingnumberNational ranking of the company, or null.
lastBormeDatestringDate of the latest BORME act (DD/MM/YYYY), or null.
lastBormeActstringLatest BORME act type, or null.
directorsobject[]Board of directors as {role, name, appointedDate} entries. Names are masked at the source.
queryNamestringThe input name that produced this record.
listingUrlstringSource directory listing URL.
sourcestringData source label (einforma).
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.
enrichedEmailstringPublic business contact email found by the add-on, or null.
enrichedContactNamestringContact person name found by the add-on, or null.
enrichedJobTitlestringContact person job title found by the add-on, or null.
enrichedEmailStatusstringVerification status of the enriched email, or null.
enrichedSourcestringSource URL the enriched contact was found on, or null.
enrichedConfidencestringConfidence label for the enriched contact, or null.

Example output record

Real record from a live run (input {"companyNames": ["Mercadona","Inditex","Acciona","Cementos Molins"], "maxCompanies": 10}). The directors array is trimmed here to 3 of 10 entries with ...:

{
"companyName": "ACCIONA, SA",
"legalName": "ACCIONA, SA",
"cif": "A08001851",
"website": "http://www.acciona.com/es",
"phone": "916632850",
"phones": ["916632850"],
"email": null,
"activity": "Sociedades de cartera (holdings)",
"cnaeCode": "6421",
"cnaeDescription": "Actividades de sociedades holding",
"legalForm": "Sociedad anónima",
"street": "Avenida Gran Via De Hortaleza, 3",
"city": "Madrid",
"province": "Madrid",
"postalCode": "28033",
"country": "España",
"employees": 176,
"foundingDate": "16/06/1916",
"capitalSocial": 54856653,
"capitalSocialText": "54.856.653 €",
"listedOnStockExchange": true,
"lastYearResult": "Positivo",
"nationalRanking": 542,
"lastBormeDate": "04/08/2026",
"lastBormeAct": "Reelecciones",
"directors": [
{ "role": "Presidente", "name": "JOSE MANUEL E...", "appointedDate": "22/10/2009" }
],
"queryName": "Acciona",
"listingUrl": "https://www.einforma.com/informacion-empresa/acciona",
"source": "einforma",
"observedAt": "2026-08-10T14:30:05.672Z",
"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~spain-companies-directory-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companyNames":["Mercadona","Inditex"],"maxCompanies":10}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~spain-companies-directory-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companyNames":["Acciona"],"enrichContacts":true,"enrichContactsMax":5}'

Apify CLI:

apify call scrapers_lat/spain-companies-directory-scraper \
--input '{"companyNames":["Cementos Molins"]}'

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 (result event). See the pricing tab for the current per-result price.
  • Contact enrichment add-on. When enrichContacts is on, each enrichment attempt is billed, plus an extra charge only when an email is found. Leave it off to pay only the per-result price.
  • 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, and the enrichment add-on is capped at 3 attempts. Upgrade for higher maxCompanies.

FAQ and troubleshooting

Why are director names masked? The source directory masks director surnames for privacy. The actor returns the names exactly as published and does not unmask them.

Why did fewer records come back than names I entered? A name may not resolve to a directory listing, or several inputs may resolve to the same company. The queryName field shows which input produced each record.

Why is email null? The directory listing has no public email. Enable the contact enrichment add-on to attempt to find one.

What is nationalRanking? The company's ranking within Spain as reported by the source directory. It is null when the source does not rank the company.

Is this an official company registry tool? No. This actor is independent and has no affiliation with the source directory or any Spanish authority. It reads only publicly available company data. Use the results in accordance with the source's terms.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for 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 the source directory or any Spanish authority. Accesses only publicly available company data. Use the results in accordance with the source's terms.