{
  "openapi": "3.0.1",
  "info": {
    "title": "Snupit Scraper - South Africa Home Services Directory",
    "description": "Scrape Snupit, South Africa's home-services and business quote directory. Search by category and city, or fetch full provider profiles by URL. Get names, addresses, categories, ratings, reviews, Pro Verified status, years in business, employee count, and photos.",
    "version": "1.0",
    "x-build-id": "jsh9JmaedWf3nFunj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~snupit-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-snupit-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~snupit-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-snupit-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~snupit-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-snupit-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",
              "detail"
            ],
            "type": "string",
            "description": "What to fetch: search a category + city, or fetch full provider profiles from direct Snupit URLs.",
            "default": "search"
          },
          "category": {
            "title": "Service category",
            "enum": [
              "custom",
              "3d-printing",
              "access-control",
              "accounting",
              "accounting-software-support",
              "accounting-tutors",
              "advertising",
              "afrikaans-tutors",
              "after-care",
              "agricultural-equipment",
              "agricultural-services",
              "air-conditioning",
              "alarm-systems",
              "aluminium-doors-and-windows",
              "appliance-repairs",
              "architects",
              "armed-response",
              "artificial-turf",
              "asphalting",
              "audi-repairs",
              "audio-visual",
              "audio-visual-equipment",
              "audiologists",
              "auditors",
              "auto-electricians",
              "auto-glass",
              "automotive-spares",
              "awnings",
              "baby-sitters",
              "background-checks",
              "bakery-equipment",
              "balustrades",
              "bartenders",
              "bathroom-renovations",
              "batteries",
              "bbbee",
              "beauty-salons",
              "biltong",
              "blinds",
              "blinds-cleaning",
              "bmw-repairs",
              "borehole-drillers",
              "boxes",
              "brakes-and-clutches",
              "builders",
              "building-demolishers",
              "building-developers",
              "building-materials",
              "building-site-cleaning",
              "burglar-bars",
              "bus-services",
              "bush-camping",
              "business-consultants",
              "cake-shops",
              "canopies",
              "car-accessories",
              "car-aircon-regassing",
              "car-alarms",
              "car-branding",
              "car-rental",
              "car-sound-systems",
              "car-tracking",
              "car-upholsterers",
              "car-washes",
              "car-window-tinting",
              "caregivers",
              "carpenters",
              "carpet-cleaning",
              "carpeting",
              "carports",
              "caterers",
              "catering-equipment",
              "catering-equipment-hire",
              "cctv",
              "ceiling-installers",
              "cellphone-repairs",
              "chimney-cleaning",
              "chiropractors",
              "civil-engineering",
              "civil-engineering-consultants",
              "cladding",
              "cleaning-materials",
              "cleaning-services",
              "clothing-manufacturers",
              "cloud-storage",
              "clowns",
              "company-registrations",
              "compressors",
              "computer-aided-design",
              "computer-courses",
              "computer-repairs",
              "computers",
              "concrete-flooring",
              "concrete-products",
              "concrete-slabs",
              "concreting",
              "conveyancers",
              "conveyors",
              "copywriting",
              "corporate-event-planners",
              "corporate-gifts",
              "corporate-identities",
              "corporate-videos",
              "corporate-wear",
              "counsellors",
              "couriers",
              "creches",
              "crime-scene-cleaning",
              "curtain-cleaning",
              "curtains",
              "cv-joints",
              "cv-writer",
              "cyber-security",
              "dance-lessons",
              "data-recovery",
              "day-care-centres",
              "debt-collection",
              "debt-counsellors",
              "dentists",
              "dermatologists",
              "designer-mats",
              "diesel-mechanics",
              "dieticians",
              "digital-marketing",
              "dispute-resolution",
              "divorce-lawyers",
              "djs",
              "document-management",
              "doors",
              "drainage",
              "dressmakers",
              "driving-schools",
              "drywalls",
              "dstv-installers",
              "earthmoving-equipment",
              "electric-fencing",
              "electricians",
              "email-marketing",
              "embroidery",
              "engine-overhauls",
              "engineers",
              "english-tutors",
              "engraving",
              "entertainment-companies",
              "escalators-and-elevators",
              "estate-agents",
              "estates-and-trusts",
              "event-decorations",
              "event-planners",
              "events-staff",
              "excavations",
              "face-painters",
              "fencing",
              "fibre-optics",
              "financial-advisors",
              "fire-fighting-training",
              "fire-safety",
              "firearm-training",
              "fireplaces",
              "fireproofing",
              "first-aid",
              "flag-poles",
              "flooring",
              "florists",
              "forensic-investigators",
              "forklift-hire",
              "forklift-repairs",
              "forklift-training",
              "fridge-repairs",
              "fuels",
              "funeral-parlours",
              "funeral-policies",
              "furniture-designers",
              "furniture-manufacturers",
              "gabion-baskets",
              "garage-door-motors",
              "garage-doors",
              "gardeners",
              "gas-installers",
              "gas-suppliers",
              "gate-motors",
              "gates",
              "gearboxes",
              "generator-hire",
              "generators",
              "geotechnical-engineers",
              "glass-works",
              "graduation-gowns",
              "granite-services",
              "graphic-designers",
              "groomers",
              "gutter-cleaning",
              "gutter-supplies",
              "guttering",
              "gynaecologists",
              "hair-stylists",
              "handwriting-experts",
              "handymen",
              "health-and-safety-courses",
              "heat-pumps",
              "high-pressure-cleaning",
              "holiday-accommodation",
              "home-furniture",
              "home-improvements",
              "home-loans",
              "human-resources",
              "hypnotherapists",
              "industrial-cleaning",
              "insurance",
              "interior-designing",
              "internet-solutions",
              "irrigation",
              "it-companies",
              "jumping-castle-hire",
              "jungle-gyms",
              "kids-party-entertainers",
              "kids-party-planners",
              "kitchen-renovations",
              "labour-lawyers",
              "laminate-flooring",
              "land-surveyors",
              "landscaping",
              "language-tutors",
              "lapas",
              "laptop-repairs",
              "laser-clinics",
              "laser-cutting",
              "laundry-services",
              "lawyers",
              "life-coaches",
              "lifting-equipment",
              "lighting",
              "lightning-protection",
              "loans",
              "locksmiths",
              "logistics",
              "logo-design",
              "magicians",
              "make-up-artists",
              "marble-and-granite-suppliers",
              "marketing",
              "marriage-counsellors",
              "marriage-officers",
              "massage-therapists",
              "maths-tutors",
              "mechanics",
              "medical-aid",
              "mentors",
              "mercedes-benz-repairs",
              "microwave-repairs",
              "mobile-apps",
              "movers",
              "music-lessons",
              "networking",
              "newspaper-distribution",
              "occupational-health-and-safety",
              "office-cleaning",
              "office-equipment",
              "office-furniture",
              "optometrists",
              "outdoor-furniture",
              "packaging-supplies",
              "paint",
              "painters",
              "palisade-fencing",
              "panel-beaters",
              "partitioning",
              "party-decorations",
              "party-planners",
              "patios",
              "paving",
              "payroll",
              "personal-protection-equipment",
              "personal-trainers",
              "pest-control",
              "pet-sitters",
              "photographers",
              "physics-tutors",
              "physiotherapists",
              "picture-framing",
              "pizza-ovens",
              "plant-hire",
              "plastering",
              "plastic-surgeons",
              "plumbers",
              "podiatrists",
              "polygraph-testing",
              "pony-rides",
              "pool-cleaning",
              "pos-systems",
              "pre_schools",
              "precast-fencing",
              "prefabricated-houses",
              "prepaid-electricity-meters",
              "printer-cartridges",
              "printing",
              "private-investigators",
              "project-management",
              "property-developers",
              "property-managers",
              "property-valuations",
              "psychiatrists",
              "psychologists",
              "publishing",
              "pumps",
              "quantity-surveying",
              "radiators",
              "recording-studios",
              "recruitment-agencies",
              "refrigeration",
              "risk-management",
              "road-marking",
              "road-works",
              "roadside-assistance",
              "roller-doors",
              "roofing",
              "rubberising",
              "rubble-removal",
              "safes",
              "sanitisation",
              "school-furniture",
              "school-transport",
              "search-engine-optimisation",
              "security",
              "security-equipment",
              "security-gates",
              "security-training",
              "septic-tanks",
              "shadeports",
              "shopfitters",
              "shower-doors",
              "shutters",
              "shuttle-services",
              "signs",
              "skills-development",
              "skin-clinics",
              "skip-hire",
              "skylighting",
              "social-media-marketing",
              "software",
              "software-development",
              "solar-geysers",
              "solar-systems",
              "sound-hire",
              "soundproofing",
              "spas",
              "spas-and-jacuzzis",
              "speed-fencing",
              "sports-coaches",
              "sports-court-contractors",
              "stainless-steel-fabrication",
              "staircases",
              "stationery",
              "steel-works",
              "storage",
              "stove-repairs",
              "structural-engineers",
              "structural-steel-fabrication",
              "swimming-lessons",
              "swimming-pool-builders",
              "swimming-pool-supplies",
              "table-and-chair-hire",
              "table-and-chair-suppliers",
              "tanks",
              "tar-surfacing",
              "taxis",
              "team-building",
              "telecommunication-equipment",
              "telecommunications",
              "tent-hire",
              "tent-manufacturers",
              "thatched-roofing",
              "therapists",
              "tiling",
              "tipper-truck-hire",
              "tlb-hire",
              "toilet-hire",
              "tombstones",
              "tour-operators",
              "tow-bars",
              "towing",
              "town-planners",
              "tracing",
              "trailers",
              "transcription",
              "translators",
              "transportation",
              "travel-agents",
              "tree-felling",
              "trenching",
              "trophies-and-medals",
              "truck-rental",
              "tutors",
              "tv-installers",
              "tv-repairs",
              "typing",
              "underfloor-heating",
              "upholsterers",
              "upholstery-cleaning",
              "ups-installers",
              "vehicle-finance",
              "ventilation",
              "venues",
              "video-editing",
              "videographers",
              "vw-repairs",
              "wallpaper-suppliers",
              "wallpapering",
              "waste-management",
              "water-meters",
              "water-purification",
              "water-suppliers",
              "water-tanks",
              "waterproofing",
              "web-hosting",
              "website-designers",
              "wedding-decorations",
              "wedding-photographers",
              "wedding-planners",
              "wedding-venues",
              "welders",
              "wendy-houses",
              "window-cleaning",
              "window-installers",
              "window-tinting",
              "windows",
              "wire-mesh-fencing",
              "wooden-decking",
              "wooden-fencing"
            ],
            "type": "string",
            "description": "Home-service or business category to search for. Pick from the full list of Snupit categories, or choose 'Custom category' and type your own below (mode=search).",
            "default": "builders"
          },
          "customCategory": {
            "title": "Custom category (overrides selection above)",
            "type": "string",
            "description": "Free-text category slug not in the list above, e.g. 'pool-maintenance' (mode=search). Takes priority over 'Service category' when set. Use Snupit's own slug format (lowercase, hyphen-separated) -- Snupit does not fuzzy-match arbitrary keywords."
          },
          "city": {
            "title": "City / town",
            "enum": [
              "custom",
              "akasia",
              "alberton",
              "amanzimtoti",
              "ballito",
              "bela_bela",
              "belhar",
              "bellville",
              "benoni",
              "bloemfontein",
              "boksburg",
              "brackenfell",
              "brakpan",
              "brits",
              "bronkhorstspruit",
              "cape-town",
              "carletonville",
              "centurion",
              "chatsworth",
              "durban",
              "durban-north",
              "durbanville",
              "east-london",
              "edenvale",
              "empangeni",
              "george",
              "germiston",
              "goodwood",
              "gordons-bay",
              "hammanskraal",
              "hammarsdale",
              "hartbeespoort",
              "heidelberg",
              "hermanus",
              "hillcrest",
              "howick",
              "isipingo",
              "jeffreys-bay",
              "johannesburg",
              "katlehong",
              "kempton-park",
              "khayelitsha",
              "kimberley",
              "king-williams-town",
              "kleinmond",
              "klerksdorp",
              "kloof",
              "knysna",
              "kokstad",
              "kraaifontein",
              "kroonstad",
              "krugersdorp",
              "kuils-river",
              "ladysmith",
              "langebaan",
              "lenasia",
              "mabopane",
              "mahikeng",
              "malmesbury",
              "mamelodi",
              "margate",
              "meyerton",
              "middelburg-_-mp",
              "midrand",
              "mitchells-plain",
              "mokopane",
              "mount-edgecombe",
              "mthatha",
              "nelspruit",
              "newcastle",
              "newlands-east",
              "nigel",
              "olifantsfontein",
              "oudtshoorn",
              "paarl",
              "parys",
              "phoenix",
              "pietermaritzburg",
              "pinetown",
              "plettenberg-bay",
              "polokwane",
              "port-elizabeth",
              "port-shepstone",
              "potchefstroom",
              "pretoria",
              "randburg",
              "randfontein",
              "rondebosch",
              "roodeplaat",
              "rustenburg",
              "sandton",
              "sasolburg",
              "scottburgh",
              "secunda",
              "somerset-west",
              "soshanguve",
              "soweto",
              "springs",
              "stanger",
              "stellenbosch",
              "strand",
              "table-view",
              "tembisa",
              "thohoyandou",
              "tongaat",
              "tzaneen",
              "uitenhage",
              "umhlanga",
              "umlazi",
              "vanderbijlpark",
              "vereeniging",
              "verulam",
              "vosloorus",
              "vredenburg",
              "vryheid",
              "welkom",
              "wellington",
              "westville",
              "white-river",
              "witbank",
              "worcester"
            ],
            "type": "string",
            "description": "South African city or town to search in. Pick from Snupit's list of covered cities, or choose 'Custom city' and type your own below (mode=search).",
            "default": "johannesburg"
          },
          "customCity": {
            "title": "Custom city (overrides selection above)",
            "type": "string",
            "description": "Free-text city/town slug not in the list above (mode=search). Takes priority over 'City / town' when set. Use Snupit's own slug format (lowercase, hyphen-separated)."
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "rating",
              "reviewCount",
              "name"
            ],
            "type": "string",
            "description": "How to order the returned results (mode=search). Snupit's own listing order is used by default; other options are applied client-side across the fetched batch.",
            "default": "relevance"
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only return providers rated at least this many stars, e.g. 4 for 4.0+ (mode=search). 0 means no minimum. Providers with no rating yet are excluded once this is set above 0.",
            "default": 0
          },
          "verifiedOnly": {
            "title": "Pro Verified only",
            "type": "boolean",
            "description": "Only return providers that carry Snupit's 'Pro Verified' badge. Requires 'Fetch full provider profiles' to be enabled, since the badge only appears on profile pages (mode=search).",
            "default": false
          },
          "fetchDetails": {
            "title": "Fetch full provider profiles",
            "type": "boolean",
            "description": "For each search result, also visit its provider profile page to collect the Pro Verified badge, years in business, employee count, full review list, and photo gallery. Slower -- one extra request per result (mode=search).",
            "default": false
          },
          "providerUrls": {
            "title": "Provider profile URLs (mode=detail)",
            "type": "array",
            "description": "Direct Snupit provider profile URLs to fetch, e.g. https://www.snupit.co.za/johannesburg/bramley/vsc-construction-and-projects/425180. Use the 'sourceUrl' field from search results.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "type": "string",
                  "description": "Snupit provider profile URL."
                }
              }
            },
            "default": []
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Hard cap on the number of provider records to return. Note: Snupit shows at most 15 providers per city+category combination (mode=search), so higher values only matter for mode=detail with many URLs.",
            "default": 15
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}