Europages Scraper [$0.50/1K💰] | B2B Supplier Leads
Pricing
from $0.50 / 1,000 company listings
Europages Scraper [$0.50/1K💰] | B2B Supplier Leads
Extract Europages B2B supplier profiles by keyword across 5 country portals. Returns named contacts, direct phone, website, VAT number, employees, certifications, documents and geo-coordinates for ~50 fields per company. Pay per company found.
Pricing
from $0.50 / 1,000 company listings
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Europages Scraper — B2B Supplier Leads With Contacts, Certificates and VAT Numbers
Extract Europages B2B supplier profiles by keyword across five country portals — .co.uk, .fr, .de, .it and .es — and get back roughly 50 fields per company: named contacts, direct phone, website, VAT number, employee band, founding year, certifications, documents, geo-coordinates, supplier type and responsiveness signals.
Built for B2B lead generation, supplier sourcing, competitor mapping and CRM enrichment. One listing event finds the company; the profile event enriches it.
What you get that other Europages scrapers drop
Most Europages scrapers return a name, a city and a URL. The fields that actually decide whether a lead is usable are the ones buried on the profile page — and they are exactly what this Actor returns:
contacts[]— the named people Europages publishes on the profile, with their phone and role, not just a generic switchboardvatId— the company's VAT registration number, the fastest way to validate a business entitycertificates[]/certificatesCount— ISO and industry certifications already matched for youresponseRate/averageResponseTime/quickResponder— whether this supplier actually answerssupplierTypes[]— manufacturer, distributor, service provider, wholesalerincoterms[]/paymentMethods[]/restrictedIn[]/distributionArea— trade-readiness fields that decide if a supplier can ship to youlatitude/longitude— real coordinates for map clustering and territory planningdocuments[]/pictures[]/videos[]— brochures and catalogues, ready to feed a buying decision
Main use cases
- B2B lead generation — keyword to named-contact list, already deduplicated per keyword
- Supplier sourcing — filter by supplier type, certifications, employee band and export capability
- CRM enrichment — fill in phone, website, VAT ID, employees and founding year on an existing company list
- Competitor and market mapping — who serves your product category, where they are based, how big they are
- Territory and logistics planning — geo-coordinates plus
incotermsanddistributionArea - Agency and consultancy research — find every agency in a niche, then qualify by size and activity
- Company registry enrichment —
isActive,isEuropagesCustomerandcanBeContactedflags for list hygiene - Sustainability screening —
sustainabilityScorewhere the company publishes one
Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
keywords | array | no | ["stainless steel"] | Product/category keywords. Each one becomes a Europages keyword-results page walk. |
site | string | no | europages.co.uk | Which portal to scrape: europages.co.uk, .fr, .de, .it or .es. Coverage and profile URL format differ per portal. |
countryFilter | array | no | [] | Restrict to companies located in these countries. Applied server-side by Europages, so it costs nothing extra. One listing walk per keyword per country. |
maxItems | integer | no | 200 | Hard cap on company records written (1–5000). |
maxListPages | integer | no | 10 | Listing pages walked per keyword (1–100). Up to 30 companies per page. Europages itself stops serving past page 100. |
maxConcurrency | integer | no | 20 | Parallel requests (1–50). Europages handles 40 concurrent requests without throttling. |
maxRequestsPerSecond | integer | no | 8 | Global rate cap shared by all parallel requests (1–60). Europages rate-limits per IP with an HTTP 405 Human Verification ban of minutes; on a block the Actor pauses, probes with a single request and halves the rate until it recovers. |
includeDetails | boolean | no | true | true fetches every profile page for description, contacts, phone, website, employees, founding year, geo and documents. false returns listing data only and is roughly 10× faster. |
startUrls | array | no | [] | Direct listing or company profile URLs, used instead of or in addition to keywords. |
proxy | object | no | useApifyProxy: false | Standard Apify proxy picker. Not needed for normal runs. |
Examples
Cheapest market sizing — listing data only, one keyword, two countries:
{"keywords": ["cnc machining"],"countryFilter": ["Germany", "Italy"],"includeDetails": false,"maxListPages": 5,"maxItems": 300}
Full lead-gen run — profile pages, contacts and VAT IDs:
{"keywords": ["stainless steel", "aluminium extrusion"],"site": "europages.co.uk","countryFilter": ["United Kingdom"],"includeDetails": true,"maxListPages": 10,"maxItems": 500,"maxConcurrency": 25}
German portal, services niche, enrichment off for speed:
{"keywords": ["marketing agency"],"site": "europages.de","includeDetails": false,"maxItems": 1000,"maxConcurrency": 40}
Enrich a list you already have — paste profile URLs directly:
{"keywords": [],"startUrls": ["https://www.europages.co.uk/company/Acme-Steel-Ltd-123456.html","https://www.europages.co.uk/company/Beta-Metals-654321.html"],"includeDetails": true}
Output
One flat dataset — one row per company. The Overview view gives you logo, company, business area, city, country, employees, founded, phone, website, customer flag and profile link.
Core identity and location
| Field | Description |
|---|---|
name / acronym | Company name and short form |
europagesId / companyId / uuid | Stable Europages and registry identifiers — use these as join keys |
url / profileUrl / catalogUrl | Listing URL, profile page URL, product catalogue URL |
city / region / country / address / postalCode | Postal location |
latitude / longitude | Numeric coordinates for mapping and territory work |
logoUrl | Company logo |
Classification
| Field | Description |
|---|---|
mainBusinessArea | What the company does, in Europages' own words |
categories[] / productCategories[] | Classified categories and product categories |
supplierTypes[] | Manufacturer, distributor, service provider, wholesaler |
keywords[] | The search keyword that found this company — lets you group a merged dataset back by intent |
Qualification
| Field | Description |
|---|---|
description | Full company description |
employees | Employee band as a string (e.g. 10-49) |
foundingYear | Year founded |
vatId | VAT registration number |
sustainabilityScore | Sustainability score where published |
paymentMethods[] / incoterms[] | Accepted payment methods, Incoterms offered |
restrictedIn[] / distributionArea | Export restrictions and distribution coverage |
Contacts
| Field | Description |
|---|---|
phone / fax | Main phone and fax |
website | Company website |
contacts[] | Named people published on the profile: name, phone, role |
Trust and activity signals
| Field | Description |
|---|---|
certificates[] / certificatesCount | Certifications listed on the profile |
documents[] | Brochures and catalogues: url, title, filename, mimeType |
pictures[] / videos[] | Profile media: url/title and videoId/kind/title |
referencesCount | Number of customer references — a strong activity signal |
responseRate / averageResponseTime / quickResponder | Whether the supplier answers enquiries |
isActive / isEuropagesCustomer / canBeContacted | Listing hygiene flags |
Provenance
| Field | Description |
|---|---|
site / keyword | Which portal and which keyword produced this row |
detailScraped | true when the profile page was fetched and fully enriched, false when only listing data was available |
scrapedAt | ISO timestamp |
The two flags that matter most
detailScraped— afalserow means the profile page was blocked, errored or unreachable, and you have listing data only. Filter ondetailScraped == truebefore treating a row as a complete lead.keyword— the same company can appear under several keywords in one run. Deduplicate oneuropagesIdand usekeywordto see which intent surfaced it.
Example output
{"url": "https://www.europages.co.uk/company/Acme-Steel-Ltd-123456.html","profileUrl": "https://www.europages.co.uk/company/Acme-Steel-Ltd-123456.html","name": "Acme Steel Ltd","acronym": "ASL","europagesId": "123456","companyId": 123456,"description": "Acme Steel Ltd manufactures cold drawn and hot rolled steel sections...","phone": "+44 161 555 0142","website": "https://www.acmesteel.co.uk","city": "Manchester","country": "United Kingdom","address": "12 Ducie Street, Manchester, M1 2JW","postalCode": "M1 2JW","latitude": 53.4808,"longitude": -2.2344,"employees": "50-99","foundingYear": "1987","vatId": "GB123456789","mainBusinessArea": "Steel and stainless steel","categories": ["Metalworking", "Steel"],"productCategories": ["Steel profiles", "Stainless steel bars"],"supplierTypes": ["Manufacturer", "Distributor"],"certificates": ["ISO 9001", "EN 10088"],"certificatesCount": 2,"contacts": [{ "name": "R. Whitfield", "phone": "+44 161 555 0142", "role": "Sales Director" },{ "name": "K. Ahmed", "phone": null, "role": "Export Office" }],"documents": [{"url": "https://www.europages.co.uk/companiesdocs/123456/catalogue.pdf","title": "Product catalogue","filename": "catalogue.pdf","mimeType": "application/pdf"}],"incoterms": ["EXW", "FOB", "CIF"],"paymentMethods": ["Credit Card", "Bank Transfer"],"referencesCount": 4,"responseRate": "Very responsive","averageResponseTime": "Less than 24 hours","quickResponder": true,"isEuropagesCustomer": true,"isActive": true,"canBeContacted": true,"logoUrl": "https://cdn.europages.com/logos/123456.png","site": "europages.co.uk","keyword": "stainless steel","detailScraped": true,"scrapedAt": "2026-09-30T09:14:22.000Z"}
Cheaper listing-only row
With includeDetails: false you get the light shape — everything needed for market sizing and list building, at 10× the speed:
{"url": "https://www.europages.co.uk/company/Beta-Metals-654321.html","name": "Beta Metals","city": "Birmingham","country": "United Kingdom","employees": "10-49","site": "europages.co.uk","keyword": "aluminium extrusion","detailScraped": false,"scrapedAt": "2026-09-30T09:12:04.000Z"}
Monitor supplier activity on a schedule
Europages listings are not a one-shot scrape — suppliers change certifications, add contacts and go quiet. Recurring runs turn the dataset into a monitoring feed:
- Weekly — same keywords and countries; diff
certificates[]andreferencesCountto spot suppliers who are growing - Monthly — refresh contacts and
vatIdbefore a campaign; businesses re-key frequently - Quarterly — re-run market-sizing passes with
includeDetails: falseto measure how saturated a niche has become - New-supplier alerts — schedule the same keyword weekly and keep only rows with no
europagesIdfrom the previous run - Wire into your stack — Apify webhooks, Zapier, Make, HubSpot, Salesforce and 100+ integrations fire on run completion; the dataset exports as JSON, CSV, Excel, XML, HTML or RSS
Keep the two modes on separate schedules: includeDetails: false for cheap weekly market sizing, true only when you are about to work the leads.
Related Actors
- Kompass Scraper (
ahmed_jasarevic/kompass-scraper) — the closest alternative B2B directory, useful for cross-checking a supplier list - Clutch.co Scraper (
ahmed_jasarevic/clutch-agency-scraper) — agency and services B2B leads with reviews and deep profiles - Thomasnet Scraper (
ahmed_jasarevic/thomasnet-scraper) — North American industrial supplier data - Europages Scraper by saswave (
saswave/europages-scraper) — the most-used Europages Actor on the Store, thinner field set - Europages Business Directory Scraper by easyapi (
easyapi/europages-business-directory-scraper) — directory-style extraction for quick lists
FAQ
Why not just crawl Europages myself?
You can, but you will hit three problems this Actor already handles. Europages serves 30 companies per listing page and stops past page 100, so long tails need pagination. Profile pages carry the fields that matter, so a listing-only crawl leaves you with names and URLs. And a single run across multiple keywords hits exactly the request volume where you need session handling and concurrency tuning.
Why is includeDetails worth the extra cost?
Because detailScraped: true is the difference between a lead and a name. The profile event unlocks contacts[] (named people with direct phones), vatId, website, certificates[], documents[], employees, foundingYear and latitude/longitude. Turn it on when you are about to contact someone. Turn it off when you are counting the market.
Why do I get the same company more than once?
Because one run can walk several keywords, and the same supplier legitimately ranks for several. Deduplicate on europagesId (fall back to uuid, then profileUrl). The keyword field tells you which intent surfaced each appearance, which is useful signal on its own.
What is the difference between the five country portals?
Coverage and profile URL format differ by portal. europages.co.uk skews to UK and international suppliers listed for the UK, .de and .fr carry deeper DACH and Francophone coverage, .it and .es cover their home markets. Pick the portal that matches your buyer, and use countryFilter for the rest.
How do I target specific countries without losing the others?
Use countryFilter. It is applied server-side by Europages, so a country-restricted run returns exactly the companies in that country and nothing is wasted on filtering afterwards. One listing walk runs per keyword per country.
What happens if Europages blocks a request?
Europages rate-limits per IP on a leaky-bucket basis: traffic fills the bucket, it drains slowly, and an overflow buys an HTTP 405 Human Verification ban lasting minutes (the exact same profile URLs answer 200 from an unthrottled IP, so it is never about the page itself).
The Actor defends itself three ways:
- Pacing — every request passes a global rate cap (
maxRequestsPerSecond, default 8) with jitter, so a run cannot burst into the limiter. - Circuit breaker — on a 405 the whole run pauses 20 s, doubling per failed probe up to 2 min, and while recovering only a single probe request is released at a time. Crawlee's own retry is immediate, so without this one block cascades into hundreds of refetches. A success closes the breaker and the rate is restored gradually.
- No lost leads — a profile that never gets served after all retries still produces a row from its listing data (
detailScraped: false), billed ascompany-listingonly.
If 405s keep appearing, drop maxRequestsPerSecond to 4–5, or enable the proxy input — rotating IPs is the only defence that raises the ceiling rather than working around it.
Is there an official Europages API?
Not a public one. Europages sells data products and partner arrangements directly; there is no open developer API for keyword search or profile reads. Commercial licensing is the right route for very large or continuous extraction — this Actor is the route for targeted runs and research.
Does it need a browser or a proxy?
No. Europages renders on the server and the default run uses no proxy at 512 MB. maxConcurrency: 20 is the default, but throughput is governed by the maxRequestsPerSecond cap (8 by default) — raising concurrency alone will not make the run faster, it only decides how many requests overlap while they wait for their rate slot.
For AI Agents & LLM Apps
Callable via the Apify MCP server and the Apify API. Returns one flat company-profile dataset — one row per company.
Minimal valid input — one keyword, listing data only, cheapest and fastest:
{ "keywords": ["stainless steel"], "includeDetails": false }
Full B2B lead-gen run — profiles, named contacts, VAT IDs, certificates:
{"keywords": ["stainless steel", "aluminium extrusion"],"site": "europages.co.uk","countryFilter": ["United Kingdom"],"includeDetails": true,"maxItems": 500}
Output field list — identity: name, acronym, europagesId, companyId, uuid, url, profileUrl, catalogUrl, logoUrl. Location: city, region, country, address, postalCode, latitude, longitude. Classification: mainBusinessArea, categories, productCategories, supplierTypes, keyword, site. Qualification: description, employees, foundingYear, vatId, sustainabilityScore, paymentMethods, incoterms, restrictedIn, distributionArea. Contacts: phone, fax, website, contacts. Trust: certificates, certificatesCount, documents, pictures, videos, referencesCount, responseRate, averageResponseTime, quickResponder, isActive, isEuropagesCustomer, canBeContacted. Provenance: detailScraped, scrapedAt.
Behaviors an agent should know
includeDetailsdefaults totrueand bills two events per row. The full-detail path chargescompany-listingpluscompany-profile; listing mode chargescompany-listingonly. If you are counting cost, setincludeDetails: falseand budget one event per row.- Rows are billed as they are written. A blocked or failed profile never produces a charge for data you cannot see — you get the listing row with
detailScraped: false. detailScraped: falseis the completeness flag. Filter ondetailScraped == truebefore treating rows as enriched leads.- The same company appears once per matching keyword. Deduplicate on
europagesId;keywordrecords which query surfaced it. countryFilteris server-side, so it narrows results rather than filtering them out afterwards — it does not waste requests.maxListPagesis capped at 100 because Europages itself stops serving past page 100. Above that you get fewer results, not an error.- One dataset, one
overviewview — no alternate dataset to switch to.
Billing model — pay per event: company-listing ($0.0005 per company found) and company-profile ($0.0014–$0.0015 per enriched company, charged only when includeDetails: true), plus a per-run Actor Start event scaled by memory.
Legal & Compliance Disclaimer
This Actor is an independent third-party tool. It is not affiliated with, endorsed by, sponsored by, or connected with Europages S.A. or any of its country portals.
It reads only publicly accessible pages — keyword-results listing pages, company profile pages and public document links. It does not log in, does not bypass authentication, does not solve CAPTCHAs, does not use proxies by default, and does not access any private or paid Europages interface.
Output includes published business contact data — company names, phone numbers, named business contacts with roles, and VAT registration numbers. These are business-to-business records that the companies themselves submitted to a public directory, but you remain responsible for your own lawful basis for processing them and for complying with Europages' Terms of Service and applicable law, including GDPR, UK GDPR and ePrivacy rules on B2B marketing, plus CAN-SPAM and TCPA where relevant. Europages also prohibits scraping and automated extraction in its terms of use — review those terms and consider a commercial licence or data partnership before high-volume or continuous collection.
A single Actor run can deliberately capture thousands of business records, so data minimisation matters: extract what your use case needs, respect deletion requests, and keep retention periods short.
This Actor is a data-collection tool; it does not provide legal advice and makes no claim that any particular use is permitted.
SEO Keywords
europages scraper, b2b lead generation, supplier database, b2b directory data, europages api alternative, supplier contact data, named business contacts, vat number lookup, company registry enrichment, supplier sourcing, industrial supplier data, certificates data, manufacturing leads, crm enrichment data, b2b contact list, supplier discovery, trade supplier search, keyword supplier search, europages uk, europages germany, europages france, company profiling data, procurement research, sales intelligence b2b