Europages APIeuropages.fr ↗
Search Europages suppliers and products, retrieve company profiles, contact details, certifications, and product catalogs via a structured REST API.
What is the Europages API?
The Europages API exposes 4 endpoints covering B2B supplier discovery, product search, and company intelligence across Europe's largest B2B directory. Use search_suppliers to query companies by keyword, country, and city with optional radius filtering, or search_products to browse product listings with pricing and minimum order quantities. Each endpoint returns structured JSON with contact details, company metadata, and geographic coordinates.
curl -X GET 'https://api.parse.bot/scraper/d88e24e5-0ab5-42bf-b583-1f0704815eef/search_suppliers?query=packaging&country=FR' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace europages-fr-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.europages_api import Europages, Supplier, Product, CompanyDetail, CompanyProduct
client = Europages()
# Search for suppliers in France
for supplier in client.suppliers.search(query="packaging", country="FR", limit=3):
print(supplier.name, supplier.city, supplier.country_code, supplier.employee_count)
# Search for products
for product in client.products.search(query="steel tubes", country="FR", limit=5):
print(product.name, product.slug_id, product.description)
# Get detailed company profile and browse its products
company = client.companydetails.get(slug="SEYAME", id="00000005287135-600296001")
print(company.name, company.employee_count, company.distribution_area)
print(company.address.city, company.address.postal_code)
for prod in company.products(limit=3):
print(prod.name, prod.slug_id, prod.is_showcased)
Search for suppliers/companies on Europages by keyword. Returns a paginated list of companies with contact details, location, description, and portfolio products. Supports filtering by country and city with optional radius.
| Param | Type | Description |
|---|---|---|
| city | string | City name to filter results by location. |
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. Accepted value: 'relevance'. |
| queryrequired | string | Search keyword for finding suppliers (e.g. 'packaging', 'steel', 'textile'). |
| radius | integer | Search radius in kilometers when city is provided. |
| country | string | ISO country code to filter suppliers by country (e.g. 'FR', 'DE', 'IT'). |
{
"type": "object",
"fields": {
"total": "integer total number of matching suppliers",
"companies": "array of company objects with name, company_id, city, country_code, description, employee_count, founding_year, phone_number, homepage, location, portfolio_products, supplier_types, ep_slug, ep_id",
"total_pages": "integer total number of pages",
"current_page": "integer current page number"
},
"sample": {
"data": {
"total": 5638,
"companies": [
{
"city": "Couffouleux",
"name": "Midi Cintres & PACKAGING",
"ep_id": "",
"ep_slug": "",
"homepage": "https://midi-cintres.fr/",
"location": {
"latitude": 43.808776,
"longitude": 1.737165
},
"company_id": 22345129,
"description": "Depuis 1987...",
"country_code": "FR",
"phone_number": "+1 (555) 012-3456",
"founding_year": 1987,
"employee_count": "5-9",
"supplier_types": [
"production",
"customer_specific_manufacturing"
]
}
],
"total_pages": 188,
"current_page": 1
},
"status": "success"
}
}About the Europages API
Supplier and Product Search
The search_suppliers endpoint accepts a required query keyword and optional filters including country (ISO code), city, and radius (kilometers). Results return paginated arrays of company objects containing name, company_id, city, country_code, description, employee_count, founding_year, phone_number, and a home URL. The total and total_pages fields let you walk through large result sets page by page.
The search_products endpoint takes a query keyword with optional country and per_page parameters. Each product object includes name, description, image, images, pricing fields, minimumOrderQuantity, and a nested company object carrying name, company_id, and country_code. This makes it straightforward to tie a product back to its supplier without a second request.
Company Profiles and Product Catalogs
Once you have a company's ep_slug and ep_id from search results, get_company_details returns a full profile: structured address (with addressLines, city, postalCode, countryCode), homepage, keywords, location (latitude and longitude), phoneNumber, description, certifications count, employee_count, founding_year, distribution_area, and supplier_types. The get_company_products endpoint uses the same slug and id pair to return that company's product catalog, including price, minimumOrderQuantity, isShowcased, and full image arrays. Both endpoints require identifiers sourced from search_suppliers or search_products results.
The Europages API is a managed, monitored endpoint for europages.fr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when europages.fr changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official europages.fr API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a supplier discovery tool that filters European manufacturers by country and product category using
search_suppliers. - Aggregate product pricing and minimum order quantities across competing suppliers in a specific industry vertical via
search_products. - Enrich a CRM with company founding year, employee count, certifications, and geocoordinates from
get_company_details. - Monitor a target company's product catalog for new additions or price changes using
get_company_products. - Compile B2B contact lists with phone numbers and website URLs for outbound sales prospecting.
- Cross-reference supplier distribution areas and keywords to qualify regional sourcing candidates programmatically.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Europages have an official developer API?+
What identifiers do `get_company_details` and `get_company_products` require, and where do they come from?+
slug (e.g. 'SEYAME') and an id (e.g. '00000005287135-600296001'). These correspond to the ep_slug and ep_id fields returned in search_suppliers results, and the slug_id and company identifiers returned in search_products results. You must run a search first to obtain valid values.Does `search_suppliers` return email addresses or social media profile links?+
search_suppliers includes phone_number and a home website URL, but does not expose email addresses or social media links. get_company_details similarly returns phoneNumber and homepage. You can fork this API on Parse and revise it to extract additional contact fields if they become available in the source profile.Can I filter `search_products` results by price range or minimum order quantity?+
search_products endpoint currently supports filtering by query, country, and page/per_page only. Price and minimum order quantity are returned as response fields but are not accepted as filter inputs. You can fork the API on Parse and revise it to add those filtering parameters.How does pagination work across search endpoints?+
search_suppliers and search_products return total, current_page, and total_pages in each response. Pass an integer page parameter to step through results. search_products also accepts a per_page parameter to control page size. There is no cursor-based pagination; pages are addressed by number.