Europages Scraper
Pricing
from $1.70 / 1,000 product scrapeds
Europages Scraper
Delivers a structured dataset of B2B products and suppliers from Europages. Query by keyword, category, or URL, filter by country, supplier type, company size, and other site facets, and optionally enrich records with company profiles, product details, or a supplier's full catalog.
Pricing
from $1.70 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Farhan Ali
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Europages Scraper creates a structured dataset of B2B products and supplier companies collected from Europages, Europe's largest B2B marketplace. Each dataset item represents one product or one supplier and can include name, URL, price range, currency, MOQ, images, company contact details, and supplier response metrics. Query the source using searchQueries, startUrls, or a categorySlug, filter with the same controls the site offers, cap the result with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.
Dataset at a glance
| Property | Value |
|---|---|
| Source | Europages.com (B2B marketplace) |
| Record unit | One product or one supplier company |
| Input methods | searchQueries, startUrls, categorySlug |
| Main identifiers | uuid, slug/slugId (products); companyId (suppliers); url |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, HTML, XML |
| Update model | Fresh records per Actor run |
| Pricing | Pay-per-event: $2.00 / 1,000 records; optional enrichment events billed at the same rate |
Coverage and available records
The Actor accepts three seed types and produces two record types, distinguished by the recordType field (product or supplier):
- Product search (
scrapeType: "products") — resolvessearchQueriesand category pages into product records with pricing, MOQ, images, and supplier attribution. - Supplier search (
scrapeType: "suppliers") — resolvessearchQueriesand category pages into supplier company records with location and responsiveness metrics. - Start URLs (
startUrls) — product search, supplier search, category showroom, company profile, and product page URLs are processed directly. Company profile and product page URLs scrape that page regardless ofscrapeType. - Category slug (
categorySlug) — an alternative source when no Start URL is provided.
Search filters mirror the site and apply to keyword queries: countries (ships-from), supplierTypes, employeeCounts, verifiedOnly, topResponderOnly, quickResponderOnly, plus category, material, color, and feature facets, and a price range (minPrice/maxPrice) or radius search (radiusKm with coordinates).
Conditional enrichment is controlled by three flags:
scrapeCompanyDetails— opens each company profile for phone, VAT, address, contacts, certificates, and description.scrapeProductDetails— opens each product page for the full description, images, keywords, and attributes.scrapeSupplierProducts— pulls each discovered company's full product catalog, one dataset row per catalog product (capped bymaxProductsPerSupplier).
maxItems caps the combined total across all sources (0 = unlimited). Supplier profile fields such as companyId, employeeCount, foundingYear, and vatId are present only on supplier records; priceMin/priceMax/currency/moqValue are present only on product records.
Data dictionary
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
recordType | string | No | Record kind: product or supplier | "product" |
fromSupplierCatalog | boolean | Yes | true when the product came from scrapeSupplierProducts | true |
imageUrl | string | Yes | Primary image or company logo URL | "https://supplier-offers-media-production.s3.eu-central-1.amazonaws.com/..." |
name | string | No | Product title or company name | "Oversize 100% Cotton Men's T-Shirt" |
url | string | No | Product page or company profile URL | "https://www.europages.co.uk/en/company/m-jan-sport-22331516" |
companyName | string | Yes | Supplier name on a product record | "M-JAN SPORT" |
companyUrl | string | Yes | Supplier profile URL on a product record | "https://www.europages.co.uk/en/company/m-jan-sport-22331516" |
priceMin | number | Yes | Lower bound of the product price range (EUR) | 10.0 |
priceMax | number | Yes | Upper bound of the product price range (EUR) | 20.0 |
currency | string | Yes | Price currency code | "EUR" |
moqValue | string | Yes | Minimum order quantity value | "50" |
moqUnit | string | Yes | Minimum order quantity unit | "unit" |
countryCode | string | Yes | Country code on a supplier record | "TR" |
companyCountryCode | string | Yes | Supplier country code on a product record | "TR" |
city | string | Yes | Company city | "Istanbul" |
phoneNumber | string | Yes | Company phone; present only with scrapeCompanyDetails or on suppliers | "+90 212 000 00 00" |
homepage | string | Yes | Company website URL | "https://example.com" |
description | string | Yes | Product or company description | "The oversized cotton men's t-shirt..." |
sourceQuery | string | Yes | Search term that produced the row | "men's t shirts" |
sourceUrl | string | Yes | Seed URL that produced the row | "https://www.europages.co.uk/en/products?q=..." |
scrapedAt | string | No | ISO 8601 UTC timestamp of extraction | "2026-08-16T09:16:54.586903+00:00" |
companyEmail | string | Yes | Supplier contact email on a product record | "gencturkabdullah161@gmail.com" |
slug | string | Yes | Product URL slug | "oversize-100-pamuk-erkek-tisoert-36550904" |
slugId | string | Yes | Product slug identifier | "36550904" |
uuid | string | Yes | Stable product identifier (best dedup key) | "a1b2c3d4-..." |
categoryId | string | Yes | Product category identifier | "100013" |
categoryName | string | Yes | Product category name | "Packaging machinery" |
sellPoints | array | Yes | Product selling points | ["Customizable", "Eco-friendly"] |
imageUrls | array | Yes | Product gallery image URLs | ["https://...jpeg", "https://...jpeg"] |
companyId | string | Yes | Supplier company identifier | "22331516" |
employeeCount | string | Yes | Company size band | "From20To49" |
foundingYear | string | Yes | Company founding year | "1998" |
supplierTypes | array | Yes | Supplier roles (manufacturer, distributor, etc.) | ["production", "distribution"] |
isQuickResponder | boolean | Yes | Whether the company is marked quick responder | true |
responseRate | number | Yes | Supplier response rate (0.0–1.0) | 1.0 |
vatId | string | Yes | VAT number; present only with scrapeCompanyDetails | "TR1234567890" |
contactName | string | Yes | Contact person; present only with scrapeCompanyDetails | "A. Gencturk" |
All fields except recordType, name, url, and scrapedAt are conditional on the record type, the seed that produced the row, and which enrichment flags are enabled. Product identifiers (uuid, slug, slugId) appear on product records; supplier fields (companyId, employeeCount, foundingYear, supplierTypes, vatId, contactName) appear on supplier records.
Example dataset record
The following representative product record was produced from searchQueries: ["men's t shirts"] with scrapeType: "products" (no enrichment flags). Identifiers are illustrative.
{"recordType": "product","name": "Oversize 100% Cotton Men's T-Shirt","url": "https://www.europages.co.uk/en/company/m-jan-sport-22331516/products/oversize-100-pamuk-erkek-tisoert-36550904","description": "The oversized cotton men's t-shirt is designed with 100% cotton material...","priceMin": 10.0,"priceMax": 20.0,"currency": "EUR","moqValue": "50","moqUnit": "unit","imageUrl": "https://supplier-offers-media-production.s3.eu-central-1.amazonaws.com/39b4f996-c415-418a-a875-063e379c686b.jpeg","imageUrls": ["https://supplier-offers-media-production.s3.eu-central-1.amazonaws.com/39b4f996-c415-418a-a875-063e379c686b.jpeg"],"companyName": "M-JAN SPORT","companyUrl": "https://www.europages.co.uk/en/company/m-jan-sport-22331516","companyCountryCode": "TR","companyEmail": "gencturkabdullah161@gmail.com","isQuickResponder": true,"responseRate": 1.0,"sourceQuery": "men's t shirts","scrapedAt": "2026-08-16T09:16:54.586903+00:00"}
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
startUrls | array | No* | — | Europages URLs | Product/search/category URLs, company profiles, or product pages. |
searchQueries | array | No* | ["men's t shirts"] | free text | Keywords searched on Europages; combined with scrapeType and filters. |
scrapeType | string | No | products | products, suppliers | What to collect from searches and categories. |
categorySlug | string | No* | — | e.g. packaging-machinery-100013 | Showroom category slug when no Start URL is used. |
countries | array | No | — | ISO codes (63 supported) | Ships-from / company country filter. |
supplierTypes | array | No | — | production, customerSpecificManufacturing, distribution, service, wholesaler | Supplier role filter. |
employeeCounts | array | No | — | From1To4 … MoreThan1000 | Company size filter. |
verifiedOnly | boolean | No | false | true / false | Only Europages-verified companies. |
topResponderOnly | boolean | No | false | true / false | Only companies marked top responder. |
quickResponderOnly | boolean | No | false | true / false | Only verified / quick-response companies. |
categories | array | No | — | free text | Category facet names (e.g. "T-Shirts"). |
materials | array | No | — | free text | Material facet names (e.g. Cotton). |
colors | array | No | — | free text | Color facet names (e.g. Black). |
features | array | No | — | free text | Feature facet names (e.g. Printed). |
minPrice | integer | No | — | >= 0 | Minimum product price (EUR); applied with maxPrice. |
maxPrice | integer | No | — | >= 0 | Maximum product price (EUR); applied with minPrice. |
radiusKm | string | No | "" | 10km, 25km, 50km, 75km, 100km, 125km, 250km | Distance radius around the coordinates. |
locationLatitude | number | No | — | WGS84 | Latitude for the radius filter. |
locationLongitude | number | No | — | WGS84 | Longitude for the radius filter. |
sortBy | string | No | relevance | relevance | Result ordering. |
scrapeCompanyDetails | boolean | No | false | true / false | Open company profiles; charges company-details event. |
scrapeProductDetails | boolean | No | false | true / false | Open product pages; charges product-details event. |
scrapeSupplierProducts | boolean | No | false | true / false | Scrape each company's catalog; charges supplier-product event. |
maxProductsPerSupplier | integer | No | 0 | >= 0 | Catalog products per company (0 = no per-company cap). |
maxItems | integer | No | 0 | >= 0 | Maximum records for the run (0 = unlimited). |
proxyConfiguration | object | No | Apify RESIDENTIAL | proxy config | Proxy settings; residential recommended. |
*Provide at least one of startUrls, searchQueries, or categorySlug. A minimal request and an advanced request:
{ "searchQueries": ["packaging machinery"], "maxItems": 20 }
{"searchQueries": ["packaging machinery"],"scrapeType": "suppliers","countries": ["DE", "IT"],"supplierTypes": ["production", "distribution"],"employeeCounts": ["From10To19", "From20To49"],"verifiedOnly": true,"quickResponderOnly": true,"scrapeCompanyDetails": true,"maxItems": 100,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Retrieve the data through the API
- Start the Actor with a JSON input.
- Wait for the run to finish, or use the synchronous endpoint when appropriate.
- Read items from the run's default dataset.
- Paginate or export the dataset.
A Python example using the Apify client:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("datascrapers/europages-scraper").call(run_input={"searchQueries": ["packaging machinery"], "scrapeType": "suppliers", "maxItems": 20})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item["currency"], item["companyCountryCode"])
For other languages, use the generated API tab on the Actor page. Never place a real token in a URL or example.
Data quality and record handling
- Conditional fields —
recordTypeselects the schema shape. Product fields (priceMin,priceMax,currency,moqValue,companyEmail) appear onproductrows; supplier fields (companyId,employeeCount,foundingYear,supplierTypes,vatId) appear onsupplierrows. Enrichment fields are present only when their flag is on. - Seed attribution —
sourceQueryreflects the search term;sourceUrlreflects a Start URL or category page seed. One of them is typically empty. - Completeness — listing-only rows omit detail-page fields; optional filters can reduce the number of matches returned.
- Deduplication — within a run the Actor skips already-crawled URLs. Deduplicate across runs on
uuid(products) orcompanyId(suppliers), withurlas a fallback. - Retries — individual records fail soft, so a single failed extraction does not stop the run.
- Normalization —
priceMin/priceMaxare numeric;currencyis a code;scrapedAtis ISO 8601 UTC;moqValueis a string. - Raw versus derived — all fields are source values; the Actor does not derive, convert, or AI-generate fields.
Export and pipeline examples
| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API or webhook consumer | Supplier and product master data |
| Google Sheets | Apify integration | Supplier lead lists for outreach |
| S3 / cloud storage | Scheduled export or integration | Periodic catalog archives |
| CRM / ERP | Scheduled run + webhook | Supplier enrichment and sourcing pipelines |
Pricing and cost examples
Billing is pay-per-event. Each record written to the dataset triggers the dataset-item event; enrichment flags add one extra event per affected item: company-details, product-details, and supplier-product.
| Event | What counts | Rate (per 1,000) |
|---|---|---|
dataset-item | Each product or supplier record saved | $2.00 |
company-details | Each company profile opened | $2.00 |
product-details | Each product page opened | $2.00 |
supplier-product | Each catalog product from scrapeSupplierProducts | $2.00 |
A one-time Actor Start event ($0.00005) is also applied per run. Higher Apify plan tiers apply a discount (per 1,000): Bronze $1.90 / Silver $1.80 / Gold $1.70. For this Actor's pay-per-event model, platform usage is not billed separately beyond the event rates above.
| Records | Estimated base cost |
|---|---|
| 1,000 products (listing only) | $2.00 |
| 10,000 products (listing only) | $20.00 |
| 1,000 products + company details | $4.00 |
Estimates assume the standard tier; enrichment-enabled runs pay dataset-item plus the corresponding enrichment event per affected row.
Limitations and responsible data use
- The Actor collects publicly accessible Europages.com product and supplier data only.
- Prices, MOQs, availability, and response metrics reflect the site at crawl time and can change.
- Some fields are conditional or empty depending on record type and enrichment flags (see Data quality).
- No historical snapshots are guaranteed unless you store the exported datasets yourself.
- You are responsible for complying with applicable privacy, contractual, and legal requirements when using the data.
Dataset questions
What does one dataset item represent?
One Europages product or one supplier company, selected by recordType. Products carry pricing, MOQ, and images; suppliers carry location and responsiveness metrics.
Which field should I use as a unique identifier?
Use uuid for products and companyId for suppliers, with url as a fallback across both.
Are fields nullable or conditional?
Yes. Only recordType, name, url, and scrapedAt are always present. Everything else depends on the record type, the seed, and whether enrichment flags are enabled.
Can I retrieve the records as CSV or JSON?
Yes. Records are written to the Apify Dataset and can be exported as JSON, CSV, Excel, HTML, or XML, or read through the Dataset API.
What counts as a billable result?
Each dataset record is a dataset-item charge. scrapeCompanyDetails, scrapeProductDetails, and scrapeSupplierProducts add company-details, product-details, and supplier-product charges per affected item, respectively.
Can I combine search queries, URLs, and a category slug?
Yes, but only one source is required. startUrls are processed directly, searchQueries use scrapeType and filters, and categorySlug is an alternative to a Start URL. maxItems applies to the combined total.
Does the Actor return historical data?
No. Each run collects fresh records at crawl time; no historical snapshots are maintained unless you store the exported datasets yourself.
Related datasets from Data Scrapers
- Alibaba Scraper — B2B supplier and product records from Alibaba for global sourcing comparison.
- Amazon Scraper — Amazon product, price, and seller data for marketplace research.
- Clutch Scraper — B2B company profiles and reviews for vendor and agency research.
- LinkedIn Company Scraper — Company profile data for account-based lead generation.
- FindLaw Scraper — Directory-style company and professional profiles for lead building.
Data Scrapers support
Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, the required fields, the expected record volume, and your preferred delivery format.