# eInforma Scraper — Spanish Company Register Data (`studio-amba/einforma-scraper`) Actor

Search and extract Spanish company data from eInforma (einforma.com). Look up companies by name and get CIF/VAT ID, legal form, address, founding date, CNAE industry code, business purpose, share capital, and BORME register info. No API key, no login required.

- **URL**: https://apify.com/studio-amba/einforma-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** Business, Lead generation
- **Features:** Limited permissions
- **Stats:** 16 total users, 5 monthly users, 48.4% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 result scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## eInforma Scraper — Spanish Company Register Data

Search and extract Spanish company data from [eInforma](https://www.einforma.com), the largest Spanish
company-information directory built on top of the **BORME** (Boletín Oficial del Registro Mercantil,
the official gazette of the Spanish commercial registers). Look up a company by name or CIF and get the
CIF/VAT number, legal form, registered address, founding date, telephone, headcount, CNAE industry code, corporate purpose,
share capital, and the linked provincial Registro Mercantil office. No API key, no login, no cookies
required. The actor reads eInforma's public, free company-profile pages.

eInforma is one of the main public windows into Spain's commercial registers. This actor turns a plain
company-name search into a clean, structured list of company profiles you can drop into a CRM, a KYC/
due-diligence workflow, or a sales-prospecting spreadsheet, without clicking through the site by hand.

### How to scrape eInforma data

This actor reads eInforma's own public search page and company profile pages. It returns one structured
record per matching company, with the same information you'd see by clicking through the website
yourself, but structured and bulk-exportable via the Apify API, CSV/Excel/JSON export, or scheduled
runs.

#### Search by company name or CIF

Enter a company name (e.g. `Mercadona`, `Iberdrola`) or a CIF/VAT number (e.g. `A46103834`) in
**Company Name or CIF**. eInforma's search matches on trade name, legal name, and CIF.

#### Filter by province

Set **Province Filter** to restrict results to one Spanish province, either the province name (e.g.
`Madrid`, `Barcelona`, `Valencia`) or eInforma's own 2-digit province code (e.g. `28` for Madrid). Leave
empty to search across all 52 Spanish provinces at once.

#### Result limit

**Max Results** caps how many company profiles the actor fetches and pushes per run (default 50, maximum 200).
eInforma's own search returns a limited set of name matches per query, so a run often returns fewer rows than
the cap. In test runs "Iberdrola" with Max Results 20 returned 12 companies, and "panaderia" with Max Results 200
returned 17. For broader coverage, run several narrower queries.

### What data does eInforma Scraper extract?

| Field | Type | Description |
|-------|------|--------------|
| **companyName** | String | Registered legal company name |
| **cif** | String | CIF / VAT identification number (e.g. `A46103834`) |
| **legalForm** | String | Legal form (e.g. "Sociedad limitada", "Sociedad anónima") |
| **address** | String | Full formatted registered address |
| **street** | String | Street and number |
| **postalCode** | String | Postal code |
| **city** | String | City / municipality |
| **provincia** | String | Province, as shown on eInforma |
| **country** | String | Country (always "España" for this actor) |
| **foundingDate** | String | Company founding/incorporation date (DD/MM/YYYY, as published) |
| **telephone** | String | Company telephone number in international format (e.g. `+34963568585`) |
| **numberOfEmployees** | Integer | null | Reported headcount. `null` when eInforma publishes none for the company (7 of 12 rows in the "Iberdrola" test run) |
| **industryOrPurpose** | String | C.N.A.E. activity code + description (Spain's national economic-activity classification) |
| **businessPurpose** | String | Free-text corporate purpose ("Objeto Social") from the company's bylaws |
| **shareCapital** | String | Registered share capital ("Capital Social") |
| **registroMercantil** | String | The provincial Registro Mercantil (companies register office) holding the file, plus its BORME filing count |
| **lastBormeAct** | String | Date and type of the most recent BORME notice on record |
| **url** | String | Link to the company's eInforma profile page |
| **scrapedAt** | String | ISO timestamp of extraction |

Full financial statements (deposited annual accounts / balance sheets), credit-risk scoring reports, and
"informe completo" PDF downloads are behind eInforma's paid reports and are **not** included in this
actor's output: only the free public profile fields above are scraped.

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|--------------|
| **Company Name or CIF** | String | `Mercadona` | Search by company name or CIF/VAT number |
| **eInforma profile URLs** | Array | none | Optional list of company profile URLs (`https://www.einforma.com/informacion-empresa/<name>`). Each URL returns that company with no search; `startUrls` is accepted as an alias. When set, the search field is ignored |
| **Province Filter** | String | none | Province name or 2-digit code to restrict results to |
| **Max Results** | Integer | `50` | Maximum companies to return (1–200) |
| **Proxy Configuration** | Object | Spanish residential proxy (`RESIDENTIAL`, country `ES`) | Proxy settings |

### Example output

```json
{
    "companyName": "MERCADONA SA",
    "cif": "A46103834",
    "legalForm": "Sociedad anónima",
    "address": "Calle Alfonso Roig Alfonso, S/n, 46135, Albalat Dels Sorells",
    "street": "Calle Alfonso Roig Alfonso, S/n",
    "postalCode": "46135",
    "city": "Albalat Dels Sorells",
    "provincia": "Valencia/València",
    "country": "España",
    "foundingDate": "18/01/1977",
    "telephone": "+34800500220",
    "numberOfEmployees": 115000,
    "industryOrPurpose": "51410000 - Alimentos, en general",
    "businessPurpose": "La realización de las siguientes actividades tanto en España como en el extranjero: 1. La importación, exportación, fabricación, comercialización, compra y venta de todos los artículos que comprende el ramo de la alimentación y de cualesquiera otros productos destinados al consumo. 2. La apertura y.",
    "shareCapital": "15.921.000 €",
    "registroMercantil": "Registro Mercantil de Valencia/València - 584 actos en BORME publicados",
    "lastBormeAct": "10/07/2026 Nombramientos",
    "url": "https://www.einforma.com/informacion-empresa/mercadona",
    "scrapedAt": "2026-08-01T14:23:39.494Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Common use cases

- Build B2B prospecting lists enriched with CIF, address, legal form, and industry code.
- Verify a supplier's, customer's, or partner's legal identity, registration status, and registered
  province before signing a contract.
- KYC / AML pre-checks: pull CIF, legal form, share capital, and BORME filing history in one pass.
- Feed structured Spanish company data into CRM enrichment or market-research pipelines.
- Monitor recent BORME activity (incorporations, dissolutions, appointments) for a list of target
  companies.

### Cost estimate

Pay per event: $0.005 per company returned, plus $0.01 per GB of memory when the run starts (the default is 4 GB,
which is $0.04). Measured runs: one CIF lookup returned 1 row in 7 seconds, a name search returned 12 rows in 56
seconds, and a search for a generic term returned 17 rows in 65 seconds. A run only charges for rows it returns.

### Limitations

- A lookup that finds nothing (an unknown CIF, a name with no match, a profile URL that no longer exists) ends
  SUCCEEDED with 0 rows and a status message that says so. A run only FAILS when eInforma could not be loaded.
- eInforma's own search returns a limited set of closest name matches per query (similar to typing into
  the site's search box by hand). It is not an exhaustive substring search across its full database.
  For broader coverage, run multiple narrower queries.
- Full financial statements, credit-risk scores, and paid PDF reports are not available through this
  actor: only the free public profile fields are scraped.
- Small entities (comunidades de bienes, sole traders) have thin free profiles. In the "panaderia" test run, all 17
  rows had no business purpose, share capital, Registro Mercantil or last BORME act, 16 had no telephone, and none had a
  headcount. Empty text fields come back as an empty string and a missing headcount as `null`. Company name, CIF,
  address, legal form and CNAE code were filled on every row.
- Companies that no longer exist are returned with a marker in the name, for example `IBERDROLA CORPORACION SA (EXTINGUIDA)`,
  and a last BORME act of "Extinción".
- With Province Filter set, results are limited to that province. "Mercadona" with province Madrid
  returned one row, `IMAPA RESTAURACION S.L.`, not Mercadona SA (registered in Valencia).

### Related scrapers

- **[North Data Scraper](https://apify.com/studio-amba/northdata-scraper)** - European company data (Germany + 15 more countries) from North Data.
- **[Handelsregister Scraper](https://apify.com/studio-amba/handelsregister-scraper)** - German commercial register data.
- **[KVK Scraper](https://apify.com/studio-amba/kvk-scraper)** - Dutch Chamber of Commerce company data.
- **[Companies House Scraper](https://apify.com/studio-amba/companies-house-scraper)** - UK company register data.

### Data source and legality

This actor reads publicly available company data that eInforma republishes from Spain's official
commercial registers (BORME) and other public sources. It does not access any login-protected or paid
area, and it identifies itself with a standard browser user agent. Use the data in line with eInforma's
terms and applicable data-protection rules (in particular, take care with personal data of natural
persons / autónomos returned in some results).

# Actor input Schema

## `searchQuery` (type: `string`):

Search for a Spanish company by name or CIF/VAT number. Example: 'Mercadona', 'Iberdrola', 'A46103834'.

## `profileUrls` (type: `array`):

Optional. One or more eInforma company profile URLs, e.g. 'https://www.einforma.com/informacion-empresa/mercadona'. Each URL returns that one company and no search is run. When set, searchQuery is ignored. A URL that no longer exists on eInforma is skipped and logged.

## `provincia` (type: `string`):

Optional. Restrict results to one Spanish province. Accepts a province name (e.g. 'Madrid', 'Barcelona', 'Valencia') or eInforma's 2-digit province code (e.g. '28' for Madrid). Leave empty to search all provinces.

## `maxResults` (type: `integer`):

Maximum number of companies to return.

## `proxyConfiguration` (type: `object`):

Select proxies to use. A Spanish residential proxy is used by default for geo-consistent results.

## Actor input object example

```json
{
  "searchQuery": "Mercadona",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": "Mercadona",
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "ES"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/einforma-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQuery": "Mercadona",
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "ES",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/einforma-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "Mercadona",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  }
}' |
apify call studio-amba/einforma-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studio-amba/einforma-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9KAGYLnutV90dmxXd/builds/uwpKIqwk7jiNmUbcf/openapi.json
