Europages Scraper - B2B Products and Company Data avatar

Europages Scraper - B2B Products and Company Data

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Europages Scraper - B2B Products and Company Data

Europages Scraper - B2B Products and Company Data

Extract Europages products, suppliers and public contact details from European market sites. Search by keyword or collect company and product pages. Pay per delivered row plus a start fee.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Security

Limited permissions

Share

Europages Scraper

Extract Europages B2B products, company profiles and public contact details across European market sites as rows you can export.

  • Search products or suppliers by keyword and supplier country.
  • Open company and product pages by URL or ID.
  • Collect supplier catalogues, similar products and search suggestions.
  • Keep published prices, identifiers, addresses and contact details together.
  • Pay $3.00 per 1,000 delivered rows on the Free plan, plus a small start fee.

What does Europages Scraper do?

Europages Scraper collects public product and supplier information for sourcing, company research and catalogue comparisons. It is unofficial and is not affiliated with Europages or Visable.

  • Search: product_search and company_search accept keywords and filters.
  • Details: product and company accept page URLs or IDs.
  • Supplier catalogue: instore_search lists products from one company.
  • Recommendations: similar_products lists products related to a product and its company.
  • Search assistance: autocomplete returns suggestions; ai_company_intent returns the site's company-search interpretation.
  • Trending: trending lists currently popular products and needs no keyword or URL.
  • Enrichment: enrichDetails is on by default. It adds available details to existing search rows, not separately billed rows.

The form offers 21 market codes: en, fr, de, es, it, tr, pl, nl, pt, ro, gr, se, dk, fi, no, cz, hu, bg, ee, lt, si. These select the Europages language site, not the supplier's country. Availability and field coverage vary by market and mode.

What data can you extract from Europages?

Fields depend on the selected mode and what Europages publishes. The examples below are illustrative; personal contact values are placeholders.

Product rows

FieldDescriptionExample
typeRow kindproduct
productIdEuropages product identifier1195411
titleProduct nameHydraulic cylinder
descriptionPublished descriptionIndustrial hydraulic cylinder
urlProduct page addresshttps://www.europages.co.uk/en/company/example-490125/products/cylinder-1195411
companyIdSupplier identifier490125
companyNameSupplier nameExample Components Ltd
companyUrlSupplier profile addresshttps://www.europages.co.uk/en/company/example-490125
countrySupplier countryDE
priceTextDisplayed price textOn request
minimumOrderQuantityPublished minimum order10 pieces
imagesProduct image addresses[]
attributesNamed product specifications[{"name":"Material","value":"Steel"}]
certificatesPublished certificates[]
marketSelected market codeen

Company rows

FieldDescriptionExample
typeRow kindcompany
companyIdEuropages company identifier286830
nameCompany nameExample Components Ltd
urlCompany page addresshttps://www.europages.co.uk/en/company/example-286830
countrySupplier countryDE
supplierTypesSupplier activities["Production"]
employeeCountPublished employee range20-49
foundingYearYear established1998
verifiedEuropages verification flagtrue
isQuickResponderQuick-response flagfalse
phonesPublished phone and fax entries[{"value":"+1 555 0100","type":"landline"}]
emailsPublicly displayed email entries[]
emailExistingWhether an email is indicatedtrue
addressStreet, building number, city and postcode{"street":"Example Street 1","unit":"1"}
geoPublished coordinates{"lat":52.52,"lng":13.405}
personPublished contact name and role{"name":"Jane Doe","role":"Sales"}
webCompany website and social links{"website":"https://example.com","socials":[]}
vatIdPublished tax identifier, not a phonenull
leadAbsencesReasons contact fields are empty{"emails":"login_required"}
scrapedAtCollection timestamp2026-10-24T08:00:00Z

Enriched product rows can also contain contact fields. phone, email and website remain available as simple aliases. An empty email list is not an invitation to guess an address.

Suggestion rows

FieldDescriptionExample
typeRow kindsuggestion
idGenerated suggestion identifierexample-id
textSuggested search phrasehydraulic pumps
queryOriginal keywordpump
titleDisplay texthydraulic pumps

Category suggestion rows

FieldDescriptionExample
typeRow kindcategory
titleCategory labelPumps
valueSource category value or objectPumps
queryOriginal keywordpump
FieldDescriptionExample
typeRow kindtrending
titleTrending phraseindustrial pumps
valueSource suggestion value or objectindustrial pumps
queryOriginal keywordpump

Brand suggestion rows

FieldDescriptionExample
typeRow kindbrand
titleSuggested brand labelExample Brand
valueSource brand value or objectExample Brand
queryOriginal keywordpump

Intent rows

FieldDescriptionExample
typeRow kindintent
queryOriginal company-search phrasehydraulic cylinder
eventsNumber of response events received3
categoriesSuggested category values[]
qpListDataSearch interpretation values[]
closedByResponse completion markerdone

Trending products use the product row fields above, with source set to trending.

Suggestion and intent rows also carry rowType. They describe search assistance, not verified companies or products; their generated identifiers are not supplier IDs. Each delivered row is billed at the same row price.

How to scrape Europages

  1. Open Europages Scraper in Apify Console.
  2. Fill query, a page URL or an ID field. Choose market if needed.
  3. Set maxResults to 3 for a small first run.
  4. Click Start and wait for completion.
  5. Download the dataset or read it through the API.

Empty input starts the form's example: heat exchanger, market en, at most 3 rows. Normal start and row charges apply. With mode: "auto", a keyword selects product search; URLs and IDs select detail modes. Company-only detailUrls select company details. If an explicit mode lacks its required target, the Actor selects a compatible mode and records the change.

Fill query or searchQueries; leave mode on auto or choose product_search.

Choose company_search and supply keywords. Use countryFilters to narrow supplier countries independently of market.

Company details

Use companyUrl, companyIds or company-only detailUrls. Full URLs are useful when you already have a profile.

Product details

Use productUrl, productIds or product detailUrls. Prefer full current page URLs: older numeric IDs may no longer resolve.

Supplier catalogue

Choose instore_search with one company URL or ID. It returns product rows up to your limit, not necessarily the company's entire catalogue.

Similar products

Choose similar_products and supply both the product and company identifiers.

Autocomplete

Choose autocomplete and a keyword fragment. Depending on the response, rows can be suggestions, categories, trending phrases or brands.

Company-search intent

Choose ai_company_intent and a search phrase. The output describes the site's interpretation, not a supplier list.

Choose trending. No keyword or URL is needed; it returns product rows for currently popular products, up to your limit.

Category catalog

catalog takes no target but does not deliver dataset rows. It is not a downloadable category catalogue in this Actor.

What to fill in

FieldWhat to enterDefault
modeOne of the modes aboveauto
queryOne keyword or phraseEmpty; form prefill heat exchanger
searchQueriesSeveral keywords[]
companyUrlOne company page URLEmpty
productUrlOne product page URLEmpty
detailUrlsCompany or product page URLs[]
companyIdsNumeric company IDs or company URLs[]
productIdsProduct URLs or numeric IDs[]
marketLanguage-site codeen
maxResultsRows per input, from 1 to 20070; form prefill 3
countryFiltersSupplier country codes, such as DE, FR[]
countryFilterOne country code, combined with countryFiltersEmpty
supplierTypesProduction, CustomerSpecificManufacturing, Distribution, Service, Wholesaler[]
categoryIdsNumeric category IDs from Europages[]
searchCategoryCategory lookup text; does not set categoryIdsEmpty
employeeCountsEmployee ranges, such as 20-49[]
verifiedRequire the verification flagfalse
quickResponderRequire the quick-response flagfalse
sortA sort value offered by EuropagesEmpty
maxPagesSearch-page limit, from 1 to 505
pageStarting page1
enrichDetailsAdd available details to search rowstrue
includeCatalogRequest category information; not exported as rowsfalse
companySearchFallbackAllow English-site company search when category or sort searches are unavailable locallytrue

Product search

{"mode":"product_search","query":"heat exchanger","market":"en","maxResults":3}

Company search

{"mode":"company_search","query":"pumps","countryFilters":["DE"],"maxResults":3}

Company details

{"mode":"company","companyIds":["286830"],"maxResults":1}

Product details

{"mode":"product","productUrl":"https://www.europages.co.uk/en/company/example-490125/products/cylinder-1195411","maxResults":1}

Replace the illustrative product URL with an actual Europages page.

Supplier catalogue

{"mode":"instore_search","companyIds":["286830"],"maxResults":3}

Similar products

{"mode":"similar_products","productIds":["1195411"],"companyIds":["490125"],"maxResults":3}

Autocomplete

{"mode":"autocomplete","query":"pump","maxResults":3}

Company-search intent

{"mode":"ai_company_intent","query":"hydraulic cylinder","maxResults":1}

Trending products

{"mode":"trending","market":"en","maxResults":3}

Category catalog: no dataset rows

{"mode":"catalog","market":"en","maxResults":1}

maxItems and limit are aliases for maxResults. Close field-name misspellings are corrected; other unknown fields are ignored with a note. Invalid target URLs stop collection with INVALID_INPUT and an explanation naming the field and expected address. No rows are charged for rejected input; the start fee can still apply. Every run writes its interpretation to INPUT_REPORT in the default key-value store.

Output example

Illustrative company row with placeholder contact details:

{
"type": "company",
"market": "en",
"companyId": "286830",
"name": "Example Components Ltd",
"title": "Example Components Ltd",
"url": "https://www.europages.co.uk/en/company/example-286830",
"country": "DE",
"phones": [{"value": "+1 555 0100", "type": "landline"}],
"emails": [],
"person": {"name": "Jane Doe", "role": "Sales"},
"web": {"website": "https://example.com", "socials": []},
"leadAbsences": {"emails": "login_required"},
"scrapedAt": "2026-10-24T08:00:00Z"
}

Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. RUN_SUMMARY records delivered counts and warnings; ERROR_SUMMARY describes failures.

Why use this Europages scraper?

  • Row-based charges: enrichment updates the same row without another row charge.
  • Partial delivery: available partial rows can be delivered when collection stops or reaches its time limit. Rows already saved remain in the dataset.
  • Visible gaps: unavailable contact fields remain empty, with reasons such as not_on_site, login_required or partial where available.
  • Several inputs: search multiple keywords or provide several detail URLs in one run. Repeated search keywords are combined without searching them twice.
  • No proxy setup: you do not need to set up proxies.

How much does it cost to scrape Europages?

Pricing is pay-per-event. The start event costs $0.005 per GB of allocated memory, with a minimum of one event. At the default 512 MB, the start charge is $0.005. Platform usage is included in these prices.

Apify planStart at 512 MBPrice per rowPrice per 1,000 rows
Free$0.005$0.003$3.00
Starter$0.005$0.003$3.00
Scale$0.005$0.0026$2.60
Business$0.005$0.0022$2.20
Platinum$0.005$0.0020$2.00
Diamond$0.005$0.0016$1.60

maxResults applies to each input, defaults to 70 and accepts up to 200. Larger requests are collected in parts of 70. Free Apify plan runs are capped at 200 rows, with 10 runs of this Actor. All delivered row types count toward the limits. The whole run stops at your Maximum cost per run (maxTotalChargeUsd in the API).

Example: three keywords delivering five rows each give 15 rows. On the Free plan at 512 MB: 15 × $0.003 + $0.005 = $0.050. Fewer delivered rows mean fewer row charges; an empty dataset can still incur the start fee.

What happens when the run timeout is too short

When collection needs longer than the selected timeout and automatic resumption is accepted, the run pauses rather than losing its pending work. Its status explains that it will resume automatically when results are ready and shows an estimated wait. It temporarily appears as ABORTED.

The same run resumes, writes to the same dataset and finishes as SUCCEEDED if collection succeeds. Continuing delivery can show Resumed: delivering N rows. Previously delivered rows are skipped, not delivered or charged twice. Automatic pauses are limited to three per run; keep the default 3600-second timeout to reduce interruptions.

Synchronous endpoints (run-sync, run-sync-get-dataset-items) wait at most 300 seconds and can return an empty dataset during a pause. For longer work, start asynchronously and read the dataset after SUCCEEDED, or use a succeeded-event webhook. A manual abort or collection error is not a promise of automatic recovery.

Use with AI agents and the API

Apify MCP server

In Claude, ChatGPT, Cursor, VS Code or another remote MCP client, add:

https://mcp.apify.com?tools=lentic_clockss/europages-scraper

Sign in with Apify through OAuth, or provide Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; read rows with get-dataset-items.

Clients without remote MCP support can use npx @apify/actors-mcp-server --tools lentic_clockss/europages-scraper with APIFY_TOKEN set.

Example prompt: “Find three Europages pump suppliers in Germany using company search, and return their names, URLs and public contact fields.”

Apify API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/europages-scraper").call(
run_input={"mode": "company_search", "query": "pumps", "maxResults": 3}
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('lentic_clockss/europages-scraper').call({
mode: 'company_search', query: 'pumps', maxResults: 3
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

For asynchronous HTTP calls, send input JSON to POST https://api.apify.com/v2/acts/lentic_clockss~europages-scraper/runs with the bearer-token header. After completion, use GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.

Integrations

Use the Integrations tab for Google Sheets, Make, Zapier, n8n, Slack, Airtable or webhooks. Use Apify Schedules for recurring runs.

FAQ

Public availability does not settle permission for every use. You are responsible for Europages terms and applicable data-protection law. Processing personal data requires a lawful basis.

Why did my run end as ABORTED?

A temporary ABORTED status with an automatic-resumption message can be normal. Check the status message before restarting; a manual abort is different.

How many results can I get?

Request 1–200 rows per input. Available matches, maxPages, your cost ceiling and Free-plan limits can reduce delivery.

Why are some fields empty?

Europages may not publish them, or a detail page may be unavailable. leadAbsences distinguishes missing, login-only and partial contact information when known.

Can I collect phones and emails?

Public phones and fax numbers can appear in detail or enriched rows. Email indicated by emailExisting may still require login and remain empty. The Actor does not log in or submit supplier inquiries.

Which market should I choose?

Choose the desired language site: for example en selects europages.co.uk, while de selects europages.de. Use countryFilters for supplier location. The .com language gateway is not a market option.

Can I use a product ID without its URL?

Yes, but older numeric IDs may resolve to missing pages. Use the current full product URL when possible. Missing pages do not create billable dataset rows.

Does enrichment cover every search row?

Not necessarily. Detail enrichment is limited to the first 20 rows in a collection batch and can stop earlier when time is short. Use direct detail inputs for selected profiles.

Limitations

  • Not every market and mode combination has confirmed live coverage.
  • Category and custom-sort searches can take longer and may use the English-site company-search fallback.
  • searchCategory does not apply a category filter; use categoryIds.
  • catalog and includeCatalog do not add catalogue rows to the dataset.
  • Search-assistance rows use types beyond the product/company types declared in the current dataset schema; strict schema consumers should use product or company modes.
  • Private account data, supplier inquiries and category-showroom collection are not supported.

More B2B supplier and wholesale marketplace scrapers from the same publisher:

Browse all of our scrapers at apify.com/lentic_clockss.

Support

Report problems or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.