{
  "openapi": "3.0.1",
  "info": {
    "title": "Europages Scraper - European B2B Companies & Emails",
    "description": "Scrape Europages B2B companies by keyword, country and company type: name, address, phone, website, employees, year founded, products; company emails from their own websites, certificates and VAT id on request. Splits searches past the 3,000 limit. New-companies monitoring. $3 per 1,000 on Bronze.",
    "version": "0.1",
    "x-build-id": "SkhCs1VuZHIJ3qzXK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/amitaviv~europages-company-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-amitaviv-europages-company-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/amitaviv~europages-company-scraper/runs": {
      "post": {
        "operationId": "runs-sync-amitaviv-europages-company-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/amitaviv~europages-company-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-amitaviv-europages-company-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": {
          "keywords": {
            "title": "Keywords or Europages URLs",
            "type": "array",
            "description": "What you would type into Europages' search, one per line (e.g. \"packaging\", \"cnc machining\", \"olive oil\"). You can also paste Europages URLs: a result list (https://www.europages.co.uk/companies/packaging.html, also with a country, region or page in it, and with the site's own filters such as ?supplierTypes=Production, which are kept), a search page (…/en/search?q=packaging) or a company page (one record with its full details, charged as a details event only when \"Add details\" is on). Sites read: europages.co.uk, .fr, .de, .it, .es, .nl. Each delivered company is one \"company\" charge. A run without any keyword or URL fails at once with a message.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries (optional)",
            "type": "array",
            "description": "Two-letter country codes (ISO), e.g. DE, FR, IT, ES, PL, GB (UK is read as GB). Each keyword is searched once per country (each is its own search, with its own maximum). A code that is not a country, such as XX or EN, stops the run before any request. Leave empty for all countries.",
            "items": {
              "type": "string"
            }
          },
          "companyTypes": {
            "title": "Company types (optional)",
            "type": "array",
            "description": "Deliver only companies of these types, as Europages lists them; a company can have several. Europages filters the search itself by type (all types except retailer, which it has no filter for), so a narrow type is found across the whole search, not only among its first 3,000 companies. Example: [\"manufacturer\", \"wholesaler\"]. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "manufacturer",
                "customManufacturer",
                "distributor",
                "wholesaler",
                "serviceProvider",
                "retailer"
              ],
              "enumTitles": [
                "Manufacturer / producer",
                "Custom manufacturer (made to order)",
                "Distributor",
                "Wholesaler",
                "Service provider",
                "Retailer"
              ]
            }
          },
          "site": {
            "title": "Europages language site",
            "enum": [
              "en",
              "fr",
              "de",
              "it",
              "es",
              "nl"
            ],
            "type": "string",
            "description": "Which Europages site keywords are searched on. Type keywords in its language (\"packaging\" on the English site, \"emballage\" on the French one). The company data is the same; descriptions and category names come in that site's language where the company provided them. Default: en. Any other value stops the run before any request.",
            "default": "en"
          },
          "maxItemsPerSearch": {
            "title": "Maximum companies per search",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Number of companies: the most delivered (and charged) for each keyword and country (default 100, up to 200,000). Europages itself shows at most 3,000 companies per search; above that see \"Split large searches\".",
            "default": 100
          },
          "splitLargeSearches": {
            "title": "Split large searches past the 3,000 limit",
            "type": "boolean",
            "description": "When a search has more than 3,000 companies and your maximum is above 3,000, read it country by country, and countries above 3,000 region by region, so you get far more than the site shows in one list. Each company is delivered and charged once. Run summary (OUTPUT_SUMMARY) says how many of the companies Europages reports were reached. Default on.",
            "default": true
          },
          "includeDetails": {
            "title": "Add details from each company's page",
            "type": "boolean",
            "description": "Also read each delivered company's Europages page for: certificates (ISO 9001 etc.), VAT id, fax, main activity, product categories, keywords, payment methods, incoterms, catalogue link. One more request per company, so runs are slower; charged as an extra \"company details\" event only for companies whose page was read. Default off: those fields are null and detailsFetched is false.",
            "default": false
          },
          "includeWebsiteEmails": {
            "title": "Find email addresses on company websites",
            "type": "boolean",
            "description": "Europages publishes no email addresses. Switch this on to read each delivered company's own website (home page, and up to two contact or imprint pages it links to) for its email address. Returns role addresses such as info@, sales@ or kontakt@ and mailboxes named after the company, on its own domain. Addresses that look like a person's (a first name, an initial such as j.smith@, or a first name with a surname) are only counted unless you also switch on the personal-data option below. Charged as an extra \"company email\" event only for companies where an address was found. Adds about half a minute per page of 30 companies. Default off: emails is null and websiteEmailsFetched is false.",
            "default": false
          },
          "includePrivateSellerData": {
            "title": "Include personal data (named contact persons, personal email addresses)",
            "type": "boolean",
            "description": "Off by default: records give only the number of named contact persons a company lists on Europages and the number of personal-looking email addresses on its website. Switch on to add the persons' names, roles and direct phone numbers (needs \"Add details\") and those email addresses (needs \"Find email addresses\"). These are personal data under the GDPR: by switching this on you confirm that you have a lawful basis to process them and will respect the rules on direct marketing that apply to you.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new companies (monitoring)",
            "type": "boolean",
            "description": "Deliver and charge only companies that earlier runs of this actor in your account have not delivered for the same search. Europages sorts by relevance, not by date, so each run reads the whole search up to its maximum (set the maximum to cover the whole search); each result page that holds companies delivered before is charged as a small \"monitoring page\" event ($0.0003 on Bronze, about $0.01 per 1,000 companies checked). Useful on a schedule to catch companies newly listed for a keyword. The memory is a key-value store named europages-company-scraper-monitor in your account; delete it to start over. Default off.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Only with \"Only new companies\". Any short name, e.g. packaging-it-weekly. Runs with the same search and the same monitor name share one memory. Give two schedules different names to keep their memories apart. Default: empty (one memory per search)."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default, and that is the recommended setting: with the actor's pacing, Europages answered our test runs from Apify's own addresses (one refusal in 5,853 companies, waited out). If a run reports that it was blocked, switch on Apify Proxy (datacenter is enough); each retry then goes out from a different address. Company websites are always read directly.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}