{
  "openapi": "3.0.1",
  "info": {
    "title": "Europages Company Scraper",
    "description": "Scrape Europages search results into company records with names, descriptions, addresses, websites, phone numbers, employee bands, founding years and supplier types. Optionally fetch company pages for VAT IDs, main business areas and contact persons; filter searches by keyword and country.",
    "version": "0.1",
    "x-build-id": "P4A1LgrUKf9UoI4Dd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/axiomworks~europages-company-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-axiomworks-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/axiomworks~europages-company-scraper/runs": {
      "post": {
        "operationId": "runs-sync-axiomworks-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/axiomworks~europages-company-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-axiomworks-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": "Product or service search terms",
            "type": "array",
            "description": "Search terms as strings, e.g. [\"packaging\",\"cnc machining\"]. Spaces become hyphens in the search URL. Supply keywords or startUrls; both are processed when supplied. No API default; the editor prefill searches packaging.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Europages search or company URLs",
            "type": "array",
            "description": "Europages search or company URL objects, e.g. [{\"url\":\"https://www.europages.co.uk/en/search/packaging.html?countries=DE\"}]. Use objects for Apify input validation; the runtime also accepts legacy URL strings. Supply instead of, or alongside, keywords. Use /en/search/<term>.html, not ?q=. Direct company URLs always load details. A valid page query overrides startPage. Default [].",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "countries": {
            "title": "Country codes for search results",
            "type": "array",
            "description": "ISO two-letter country codes as strings, e.g. [\"DE\",\"FR\"]. Default [] searches all countries. Applies to keywords and search URLs without their own countries query; a URL’s countries query takes precedence. Direct company URL targets ignore this country list.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Total unique companies to save",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum unique companies saved across all keywords and startUrls together, e.g. 20. Range 1-10000, default 50. Duplicates count once; fewer are returned when matches end. Empty or blocked targets save no error records.",
            "default": 50
          },
          "includeCompanyDetails": {
            "title": "Fetch additional company-page fields",
            "type": "boolean",
            "description": "Boolean, e.g. false for search-only results; default true adds mainBusinessArea, vatId, contacts, keywords and other detail fields when published. Adds one request per search result with a company URL. Direct company URLs always load details. The prefill uses false for a faster run.",
            "default": true
          },
          "employeeCounts": {
            "title": "Exact employee bands to keep",
            "type": "array",
            "description": "Employee bands as strings, e.g. [\"20-49\",\"50-99\"]. Default [] keeps all sizes. Filters search results by an exact employeeCount match before fetching details; missing bands are skipped when filtering. Does not filter direct company URLs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "supplierTypes": {
            "title": "Supplier types to keep in search",
            "type": "array",
            "description": "Supplier types as strings, e.g. [\"production\",\"wholesaler\",\"service\",\"distribution\"]. Default [] keeps all types. Search results must match at least one requested type, case-insensitively, before details are fetched. Does not filter direct company URLs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "enrichSector": {
            "title": "Add an AI industry sector",
            "type": "boolean",
            "description": "Boolean, e.g. true to request sector classification; default false leaves sector absent. Sends description and mainBusinessArea to a third-party AI processor when available. At most 500 successful classifications per run; errors save the company without sector and without an enriched-result event.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy settings for Europages requests",
            "type": "object",
            "description": "Proxy object, e.g. {\"useApifyProxy\":true} (default) to use Apify Proxy, or {\"useApifyProxy\":false} for direct requests. Blocks and rate limits retry with backoff on fresh sessions. Persistent blocks return no records for that target; try another target or adjust proxyConfiguration.",
            "default": {
              "useApifyProxy": true
            }
          },
          "startPage": {
            "title": "First search page",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "First search page to fetch, 1-200, default 1. Applies to keywords and search URLs without a valid page query. A search URL page query takes precedence. Direct company URLs ignore it; results can shift between runs.",
            "default": 1
          },
          "maxPages": {
            "title": "Search pages per target",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum search pages to fetch per target, 1-200, default 200. Counting starts at startPage or the URL page query; searches never pass page 200. maxItems still limits saved companies across all targets. Company URLs ignore this limit.",
            "default": 200
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}