{
  "title": "Thumbtack market research - choose services and cities",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "categories": {
      "title": "Service categories",
      "type": "array",
      "description": "Thumbtack service categories to scrape, one per line, written the way Thumbtack writes them (for example \"House Cleaning\", \"Plumbing\", \"Handyman\", \"Movers\"). Names are converted to Thumbtack's URL wording automatically. If a category returns HTTP 404 it does not exist under that name - open the category page on thumbtack.com and copy the wording from its URL.",
      "editor": "stringList",
      "default": [
        "House Cleaning"
      ],
      "prefill": [
        "House Cleaning"
      ],
      "sectionCaption": "1 · Services and locations",
      "sectionDescription": "Choose the public browse scope and whether nearby areas are included."
    },
    "locations": {
      "title": "Locations (City, ST)",
      "type": "array",
      "description": "US markets to scrape, one per line, in \"City, ST\" format (for example \"Houston, TX\", \"Los Angeles, CA\"). Full state names also work. Every category is scraped in every location, so 3 categories and 4 cities means 12 browse pages.",
      "editor": "stringList",
      "default": [
        "Houston, TX"
      ],
      "prefill": [
        "Houston, TX"
      ]
    },
    "includeNearbyAreas": {
      "title": "Include nearby-area browse pages",
      "type": "boolean",
      "description": "Follow Thumbtack's own \"In other nearby areas\" links to neighbouring city and neighbourhood browse pages for the same category. Nearby pages mostly list the SAME pros (in a measured Los Angeles run, 6 pages listed 47 cards but only 13 distinct businesses), so expect many more requests for a modest number of extra rows. Adding more separate metros to Locations grows a dataset faster. Leave off for a quick sample.",
      "editor": "checkbox",
      "default": false
    },
    "maxItems": {
      "title": "Maximum business records",
      "type": "integer",
      "description": "Stop after this many pro records. Thumbtack's public browse page lists roughly 4-10 pros per category and city, so to collect more than that, add more categories and locations (or turn on nearby areas) rather than raising this number alone.",
      "editor": "number",
      "default": 50,
      "minimum": 1,
      "maximum": 5000,
      "sectionCaption": "2 · Run limits",
      "sectionDescription": "Bound saved business records and collection time."
    },
    "maxRunSeconds": {
      "title": "Maximum run time (seconds)",
      "type": "integer",
      "description": "Wall-clock budget for the crawl. When it runs out the Actor stops cleanly and keeps every row collected so far instead of failing. Raise this for large category and location lists.",
      "editor": "number",
      "default": 240,
      "minimum": 30,
      "maximum": 3600
    },
    "requestDelayMs": {
      "title": "Delay between requests (ms)",
      "type": "integer",
      "description": "Politeness delay between page requests. Requests are always serial, never parallel. Lower values are faster but less polite; the default is a deliberately unhurried pace.",
      "editor": "number",
      "default": 1200,
      "minimum": 250,
      "maximum": 10000,
      "sectionCaption": "3 · Advanced request pacing",
      "sectionDescription": "Keep request delays appropriate for the source."
    }
  },
  "required": [],
  "description": "Choose supported service categories and locations to collect public business listings. Published review and business details can be incomplete; they do not establish availability, price or lead quality."
}
