{
  "openapi": "3.0.1",
  "info": {
    "title": "DeTelefoongids (Dutch Business Directory) Scraper",
    "description": "Scrape Telefoonboek.nl, the Netherlands' official business and phone directory. Search by trade/category and city, or fetch business detail pages directly. Get name, address, phone, category, rating, opening hours, website and more - no login required.",
    "version": "1.0",
    "x-build-id": "OThlK1rKBYA7pg1F8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~detelefoongids-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-detelefoongids-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/crawlerbros~detelefoongids-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-detelefoongids-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/crawlerbros~detelefoongids-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-detelefoongids-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "byCategory",
              "byUrl"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search query (mode=search)",
            "type": "string",
            "description": "Free-text keyword: a trade/profession, business name, or brand (\"restaurant\", \"loodgieter\", \"Albert Heijn\").",
            "default": "restaurant"
          },
          "category": {
            "title": "Category (mode=byCategory)",
            "type": "string",
            "description": "A Telefoonboek.nl trade/category search term. Type any term you find while browsing the site's category index at telefoonboek.nl/rubrieken/, or copy one of the 50 curated examples below into the field.\n\nCurated examples:\n`aannemer` (Contractor), `accountant` (Accountant), `acupunctuur` (Acupuncture), `administratiekantoor` (Bookkeeping office), `adviesbureau` (Consultancy), `advocaat` (Lawyer), `afvalverwerking` (Waste processing), `alarminstallatie` (Alarm installation), `antiek` (Antiques), `apotheek` (Pharmacy), `arbodienst` (Occupational health service), `architect` (Architect), `audio-en-video` (Audio & video), `auto-onderdelen` (Car parts), `autobedrijf` (Car garage), `autolease` (Car leasing), `automatisering` (IT/automation), `autosloperij` (Car scrapyard), `autoverhuur` (Car rental), `autoverkoop` (Car dealer), `bakker` (Bakery), `bank` (Bank), `basisschool` (Primary school), `bouw` (Construction), `cafe` (Café), `camping` (Camping), `catering` (Catering), `dierenarts` (Veterinarian), `elektricien` (Electrician), `fysiotherapeut` (Physiotherapist), `garage` (Garage), `hotel` (Hotel), `huisarts` (General practitioner), `installatiebedrijf` (Installation company), `kapper` (Hairdresser), `loodgieter` (Plumber), `makelaar` (Real estate agent), `notaris` (Notary), `restaurant` (Restaurant), `schilder` (Painter), `schoonmaakbedrijf` (Cleaning company), `supermarkt` (Supermarket), `tandarts` (Dentist), `taxi` (Taxi), `uitvaartverzorging` (Funeral services), `verhuisbedrijf` (Moving company), `verzekeringen` (Insurance), `videotheek` (Video rental), `vloerenbedrijf` (Flooring company), `webdesign` (Web design), `ziekenhuis` (Hospital)",
            "default": "aannemer"
          },
          "mainCategory": {
            "title": "Refine by sub-category (mode=search / byCategory)",
            "type": "string",
            "description": "Narrow results using one of telefoonboek.nl's own results-page category facets, e.g. searching `restaurant` exposes sub-facets like `cafe`, `snackbar`, `hotel`, `catering`. These facets are computed per search query, so there is no fixed global list — run once without this field, check each result's `category`/`fullAddress` for the trade you want, then re-run with that slugified term here (spaces -> hyphens, lowercase, e.g. `groothandel-in-voedingsmiddelen`). Leave empty for unrefined results."
          },
          "city": {
            "title": "City / town",
            "type": "string",
            "description": "Restrict results to a Dutch city or town, matching telefoonboek.nl's own city-scoped URLs. Works with any mode. Leave empty for nationwide results. Any valid Dutch town name is accepted; common examples: `Amsterdam`, `Rotterdam`, `Den Haag`, `Utrecht`, `Eindhoven`, `Groningen`, `Tilburg`, `Almere`, `Breda`, `Nijmegen`, `Apeldoorn`, `Haarlem`, `Arnhem`, `Enschede`, `Amersfoort`, `Zaanstad`, `Den Bosch`, `Zwolle`, `Zoetermeer`, `Leiden`, `Maastricht`, `Dordrecht`, `Ede`, `Leeuwarden`, `Alkmaar`, `Emmen`, `Delft`, `Venlo`, `Deventer`, `Helmond`."
          },
          "urls": {
            "title": "Business detail URLs (mode=byUrl)",
            "type": "array",
            "description": "Full telefoonboek.nl detail-page URLs, e.g. `https://www.telefoonboek.nl/bedrijven/t4249019/krommenie/schleich-bouw-b.v/`.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword filter",
            "type": "string",
            "description": "Only keep results whose name, description, or category contain this text (case- and diacritics-insensitive)."
          },
          "minRating": {
            "title": "Minimum rating (0-10)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Drop businesses with a review rating below this value. Telefoonboek.nl rates businesses on a 0-10 scale (not 0-5)."
          },
          "verifiedOnly": {
            "title": "Verified businesses only",
            "type": "boolean",
            "description": "Only emit businesses marked \"Geverifieerd\" (claimed/verified listing) on telefoonboek.nl. Only detectable on detail pages — combine with `fetchDetails: true` (or use mode=byUrl) for this filter to take effect.",
            "default": false
          },
          "fetchDetails": {
            "title": "Fetch full detail page per business",
            "type": "boolean",
            "description": "For search/byCategory modes: visit each business's detail page to also collect category, description, full per-day opening hours, a secondary phone number, and verified status. Slower (1 extra request per business).",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Hard cap on emitted records.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxy settings. Leave empty to use no proxy — telefoonboek.nl is publicly accessible without one. The actor automatically escalates to the free AUTO datacenter proxy group if it hits a 403/429."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}