{
  "openapi": "3.0.1",
  "info": {
    "title": "Nextdoor Scraper",
    "description": "Scrape local business recommendations, neighborhood posts, and community data from Nextdoor. Get authentic local insights and recommendations that aren't available on other platforms.",
    "version": "2.1",
    "x-build-id": "fNYaaGN1RGsnWdbrS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alizarin_refrigerator-owner~nextdoor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alizarin_refrigerator-owner-nextdoor-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/alizarin_refrigerator-owner~nextdoor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alizarin_refrigerator-owner-nextdoor-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/alizarin_refrigerator-owner~nextdoor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alizarin_refrigerator-owner-nextdoor-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": {
          "businessPageUrls": {
            "title": "Business Page URLs",
            "type": "array",
            "description": "Direct Nextdoor /pages/ URLs to scrape. NO AUTH required. Example: https://nextdoor.com/pages/motz-plumbing-north-miami-fl/",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search Terms",
            "type": "array",
            "description": "Business types to search for via Google (e.g., 'plumber', 'electrician'). Requires 'city' field. Discovers /pages/ URLs automatically.",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City + state for Google discovery (e.g., 'Miami, FL', 'Austin, TX'). Required when using searchTerms."
          },
          "cookieStorageKey": {
            "title": "Cookie Storage Key",
            "type": "string",
            "description": "Key-Value Store key from Cookie Manager actor (e.g., 'nextdoor-john'). When set, cookies are loaded automatically from the shared KV store — no need to paste sessionCookies manually. Run the Cookie Manager actor first to capture and store your cookies."
          },
          "cookieKvStoreName": {
            "title": "Cookie KV Store Name",
            "type": "string",
            "description": "Name of the Key-Value Store where Cookie Manager saves sessions. Default: 'cookie-sessions'. Only change this if you configured a custom store name in Cookie Manager.",
            "default": "cookie-sessions"
          },
          "sessionCookies": {
            "title": "Session Cookies (JSON) — Manual Override",
            "type": "string",
            "description": "JSON array of cookies from Cookie-Editor browser extension. Unlocks full Nextdoor data (recommendations, posts, reviews). Note: If cookieStorageKey is set, this field is ignored unless you want to override the stored cookies."
          },
          "neighborhoods": {
            "title": "Neighborhoods",
            "type": "array",
            "description": "Neighborhood slugs for authenticated scraping. Requires sessionCookies. Example: 'miami-beach-fl'. Find slugs in Nextdoor URLs: nextdoor.com/neighborhood/SLUG/",
            "items": {
              "type": "string"
            }
          },
          "scrapeType": {
            "title": "Scrape Type (Authenticated Mode)",
            "enum": [
              "recommendations",
              "posts",
              "businesses",
              "events"
            ],
            "type": "string",
            "description": "What type of content to scrape in authenticated mode. Only used with sessionCookies.",
            "default": "recommendations"
          },
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "Filter results by keyword (e.g., 'plumber', 'pizza'). Applied to all modes."
          },
          "category": {
            "title": "Business Category",
            "enum": [
              "all",
              "home_services",
              "restaurants",
              "automotive",
              "health",
              "pets",
              "education",
              "shopping",
              "professional_services"
            ],
            "type": "string",
            "description": "Filter by business category (authenticated mode only)",
            "default": "all"
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of business profiles to return (default: 100)",
            "default": 100
          },
          "includeComments": {
            "title": "Include Comments",
            "type": "boolean",
            "description": "Extract comments/replies on posts (authenticated mode, slower)",
            "default": false
          },
          "minRecommendations": {
            "title": "Minimum Recommendations",
            "minimum": 0,
            "type": "integer",
            "description": "Only include businesses with at least this many recommendations",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings — RESIDENTIAL recommended for Nextdoor"
          },
          "demoMode": {
            "title": "Demo Mode (FAKE DATA — turn OFF for real results)",
            "type": "boolean",
            "description": "⚠️ IMPORTANT: This is ON by default for testing. You MUST set this to FALSE to get real Nextdoor data. When enabled, returns fake sample data (e.g. 'Mike's Plumbing') for testing your integration — NOT real Nextdoor data.",
            "default": true
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "URL to POST results when scraping completes (Zapier, Make, n8n, custom endpoint)"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}