{
  "openapi": "3.0.1",
  "info": {
    "title": "Europages Scraper — European B2B Suppliers & Contacts",
    "description": "Scrape Europages B2B supplier listings by keyword, sector or country: company name, address, website, phone, business type, employees, founding year, products and keywords. Lead lists.",
    "version": "0.1",
    "x-build-id": "UYoRFXdIoFwqCepxC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~europages-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-europages-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/tortuga~europages-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-europages-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/tortuga~europages-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-europages-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords, products or sectors to search companies for, one per line (e.g. packaging, cnc machining, olive oil, injection moulding). Each term becomes a Europages company search (30 companies per page, up to 100 pages = 3,000 companies). Use the filters below to narrow it down; split big searches by country to go past 3,000.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Europages pages to scrape instead of (or in addition to) search terms: company search pages copied from the site, with or without filters and page (https://www.europages.co.uk/companies/germany/packaging.html, https://www.europages.de/unternehmen/pg-2/verpackung.html?countries=AT_CH), or company profile pages (https://www.europages.co.uk/en/company/printmasta-20041825). Search pages are paginated automatically; the filters below are not applied to start URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "countries": {
            "title": "Supplier countries",
            "type": "array",
            "description": "Optional ISO 3166 country codes to keep only suppliers based there, e.g. DE, FR, IT, ES, PL, TR, GB. Applied to the search terms (it is the site's own country filter, so the 3,000-company cap applies per country).",
            "items": {
              "type": "string"
            }
          },
          "supplierTypes": {
            "title": "Supplier types",
            "type": "array",
            "description": "Optional business-type filter for the search terms: production (manufacturer/producer), distribution (distributor), wholesaler, service (service provider), customer_specific_manufacturing (customer-specific manufacturer).",
            "items": {
              "type": "string",
              "enum": [
                "production",
                "distribution",
                "wholesaler",
                "service",
                "customer_specific_manufacturing"
              ],
              "enumTitles": [
                "Manufacturer / producer",
                "Distributor",
                "Wholesaler",
                "Service provider",
                "Customer-specific manufacturer"
              ]
            }
          },
          "verifiedOnly": {
            "title": "Verified companies only",
            "type": "boolean",
            "description": "Keep only companies with the Europages 'Verified' badge (paying members with a checked profile). Applied to the search terms.",
            "default": false
          },
          "maxItems": {
            "title": "Max companies",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many companies (across all search terms and start URLs). Keeps cost predictable.",
            "default": 100
          },
          "maxPagesPerSearch": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Listing pages to read per search term or start URL (30 companies each). Europages serves at most 100 pages per search.",
            "default": 10
          },
          "includeDetails": {
            "title": "Open each company profile",
            "type": "boolean",
            "description": "Fetch every company's profile page for the full record: activity keywords, main business area, product categories, up to 16 products with images, certifications, payment methods and terms, incoterms, VAT number and fax when published, catalogues (PDF), videos and photos. One extra request per company, charged as a `detail` event. Company name, description, address, website, phone, business type, employees, founding year and delivery area are already in the listing data.",
            "default": false
          },
          "domain": {
            "title": "Europages domain",
            "enum": [
              "europages.co.uk",
              "europages.de",
              "europages.fr",
              "europages.es",
              "europages.it",
              "europages.nl",
              "europages.pt",
              "europages.pl",
              "europages.ro",
              "europages.cz",
              "europages.se",
              "europages.dk",
              "europages.fi",
              "europages.no",
              "europages.gr",
              "europages.bg",
              "europages.ee",
              "europages.lt",
              "europages.si",
              "europages.com.tr"
            ],
            "type": "string",
            "description": "Which language edition to search. Company data is the same everywhere; descriptions, business-type labels and product names come translated in that language, and profile URLs point to that domain. Search terms should be in the domain's language for best results (the site's search is multilingual, English terms work everywhere).",
            "default": "europages.co.uk"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy is recommended for reliability on long runs. Europages serves plain HTTP pages; if runs report anti-bot challenges in the SUMMARY (AWS WAF can challenge some datacenter ranges), switch to residential proxies.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}