# Nextdoor Business Scraper (`axlymxp/nextdoor-business-scraper`) Actor

Scrape Nextdoor's local business directory — name, address, phone, GPS, category, neighbor recommendations (reviews) and an AI recommendations summary — as structured JSON for lead generation and local market research.

- **URL**: https://apify.com/axlymxp/nextdoor-business-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** Business, Lead generation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 dataset items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Nextdoor Business Scraper

**Extract Nextdoor's local business directory as clean, structured JSON —
business name, full address, phone number, GPS coordinates, category,
recommendation counts, the AI recommendations summary, and neighbor
recommendations (reviews).** Search by category and city, auto-discover popular
cities for a category, or pull specific business profiles by URL.

Built directly on Nextdoor's own data gateway (the same backend its website and
mobile apps use), so results are reliable and complete — no missing fields, no
flaky page scraping.

***

### Who it's for

| You are…                           | You get…                                                                                                                                     |
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **Lead-gen agency / B2B sales**    | Ready-to-call lists of local businesses with **phone, address and category** — prospect plumbers, restaurants, contractors, salons and more. |
| **Local SEO / reputation firm**    | **Recommendation counts, review text and the AI reputation summary** to benchmark and pitch reputation management.                           |
| **Market researcher / analyst**    | Business **density and geo-distribution** by category and city, with latitude/longitude for mapping.                                         |
| **PropTech / local-commerce SaaS** | Enrich your own business database with **Nextdoor presence and neighbor sentiment**.                                                         |

***

### Output fields

Each dataset row is one business:

| Field                                                   | Type   | Description                                                                |
| ------------------------------------------------------- | ------ | -------------------------------------------------------------------------- |
| `name`                                                  | string | Business name                                                              |
| `category`                                              | string | Primary category (e.g. "Plumber")                                          |
| `phone`                                                 | string | Phone number (E.164, e.g. `+14156406295`)                                  |
| `address`                                               | string | Full formatted address                                                     |
| `street_number`, `route`, `unit`                        | string | Street components                                                          |
| `city`, `state`, `state_name`, `postal_code`, `country` | string | Address components                                                         |
| `latitude`, `longitude`                                 | number | GPS coordinates                                                            |
| `recommendation_count`                                  | number | Neighbor recommendations received                                          |
| `connections_count`                                     | number | Neighbor connections                                                       |
| `recommendations_summary`                               | string | AI-generated summary of what neighbors say                                 |
| `recommendations`                                       | array  | Neighbor reviews: `author`, `author_location`, `text`, `verified_epoch_ms` |
| `topics`                                                | array  | Business topics/tags                                                       |
| `description`                                           | string | Business description                                                       |
| `photo_url`, `avatar_url`, `cover_url`                  | string | Images                                                                     |
| `similar_businesses`                                    | array  | Related businesses (optional)                                              |
| `url`, `slug`, `id`, `nextdoor_id`                      | string | Identifiers and profile link                                               |
| `query_category`, `query_location`                      | string | What was searched                                                          |
| `scraped_at`                                            | string | ISO timestamp                                                              |

`phone`, `latitude`, `longitude`, `recommendations_summary` and `recommendations`
are populated when **Enrich with business detail** is on (default).

***

### High-value use cases

1. **Build a local-business call list** — search `Plumber` across your target
   cities and export name + phone + address straight into your CRM or dialer.
2. **Reputation prospecting** — find businesses with few recommendations (an easy
   reputation-management pitch) or many (case-study candidates).
3. **Market mapping** — pull every `Restaurant` in a metro with GPS to visualize
   density and find underserved neighborhoods.
4. **Competitor & category intelligence** — track how many businesses list under a
   category and what neighbors say about them over time.
5. **Data enrichment** — match your existing records to Nextdoor profiles to add
   phone, geo and neighbor sentiment.

***

### Input parameters

| Field                           | Type    | Default                 | Description                                                  |
| ------------------------------- | ------- | ----------------------- | ------------------------------------------------------------ |
| `category`                      | string  | `Plumber`               | Business category to search (name or slug).                  |
| `locations`                     | array   | `["San Francisco, CA"]` | Cities to search (`City, ST`). Empty ⇒ auto-discover cities. |
| `startUrls`                     | array   | `[]`                    | Specific business page URLs/slugs (direct detail mode).      |
| `includeDetails`                | boolean | `true`                  | Enrich each listing (phone, GPS, reviews, AI summary).       |
| `includeRecommendations`        | boolean | `true`                  | Include neighbor recommendations (reviews).                  |
| `includeSimilar`                | boolean | `false`                 | Include similar businesses.                                  |
| `maxRecommendationsPerBusiness` | integer | —                       | Cap reviews per business.                                    |
| `maxCitiesPerCategory`          | integer | `15`                    | Cities to walk in discovery mode.                            |
| `maxItems`                      | integer | `100`                   | Total record cap.                                            |
| `pageDelaySeconds`              | integer | `0`                     | Optional delay between pages.                                |
| `proxyConfiguration`            | object  | off                     | Optional Apify Proxy for IP rotation.                        |

#### Three ways to run

- **Search** — set `category` + `locations`.
- **Discovery** — set `category`, leave `locations` empty; the actor finds popular
  cities for that category.
- **Direct** — set `startUrls` to specific business profiles.

***

### Example input

```json
{
    "category": "Plumber",
    "locations": ["San Francisco, CA", "Austin, TX"],
    "includeDetails": true,
    "includeRecommendations": true,
    "maxItems": 100
}
```

### Example output

```json
{
    "name": "FlowForm Plumbing",
    "category": "Plumber",
    "phone": "+14156406295",
    "address": "1346 47th Ave, San Francisco, CA, 94122",
    "city": "San Francisco",
    "state": "CA",
    "postal_code": "94122",
    "latitude": 37.7613566,
    "longitude": -122.506739,
    "recommendation_count": 4,
    "connections_count": 12,
    "recommendations_summary": "Local homeowners seeking reliable home and garden solutions consistently turn to FlowForm Plumbing…",
    "recommendations": [
        {
            "author": "R. V.",
            "author_location": "San Francisco, CA",
            "text": "I would appreciate any suggestions for good plumbers…",
            "verified_epoch_ms": 1712345678000
        }
    ],
    "topics": ["Home and garden", "Household organizer"],
    "url": "https://nextdoor.com/pages/flowform-plumbing-san-francisco-ca/",
    "scraped_at": "2026-08-25T18:00:00+00:00"
}
```

***

### Scheduling & integrations

- **Schedule** runs (daily/weekly) from the Apify Console to keep lists fresh.
- **Webhooks** notify your systems on run completion.
- **Export** to JSON, CSV, Excel or Google Sheets, or pull via the Apify API.
- Pipe into **Make, Zapier, n8n**, or your data warehouse.

### Use with AI assistants (MCP)

This actor works with the **Apify MCP server**, so AI assistants (Claude, ChatGPT,
Cursor, VS Code) can call it as a tool — e.g. *"find plumbers in Austin with phone
numbers"* — and receive structured results directly.

***

### FAQ

**Where does the data come from?** Nextdoor's public business directory —
categories, business profiles, and neighbor recommendations that Nextdoor shows to
logged-out visitors.

**Do I need a Nextdoor account or cookies?** No. The actor uses only public,
anonymous access.

**How many results can I get?** Control it with `maxItems`. Search paginates deep
through the directory; discovery mode spans many cities per category.

**How fresh is the data?** Every run fetches live data at run time.

**Why are some fields empty?** Turn on **Enrich with business detail** (default) to
populate phone, GPS, reviews and the AI summary. In fast mode only search fields
(name, address, category, photo, URL) are returned. A minority of listings hide
their street address on Nextdoor.

**Is it reliable?** The actor talks to Nextdoor's structured data gateway and
retries transient errors, so runs complete cleanly and fields stay consistent.

**Is scraping this legal?** It collects only publicly available information. You are
responsible for using the data in compliance with applicable laws, Nextdoor's terms,
and privacy regulations (e.g. GDPR/CCPA) — especially for outreach.

**Support?** Issues and feature requests are welcome via the Apify Store contact.

# Actor input Schema

## `category` (type: `string`):

The Nextdoor business category to search, e.g. 'Plumber', 'Restaurant', 'Real Estate Agent', 'Electrician', 'House Cleaner'. Used with 'Locations' (search mode) or on its own (discovery mode — the actor finds popular cities for it).

## `locations` (type: `array`):

Cities to search, e.g. 'San Francisco, CA' or 'Austin, TX'. Add several to cover multiple markets. Leave empty to let the actor auto-discover popular cities for the category.

## `startUrls` (type: `array`):

Optional. Specific Nextdoor business page links (https://nextdoor.com/pages/<slug>/) or bare slugs to fetch full detail for exact businesses instead of searching.

## `includeDetails` (type: `boolean`):

Fetch each business's profile page to add phone number, GPS coordinates, full address, topics, connections, the AI recommendations summary, and neighbor recommendations (reviews). Turn off for a faster, cheaper run that returns only search fields (name, address, category, photo, URL).

## `includeRecommendations` (type: `boolean`):

Include the list of neighbor recommendations (review author, location, text, verified date) on each business. Requires 'Enrich with business detail'.

## `includeSimilar` (type: `boolean`):

Include a short list of similar businesses (name, slug, URL) on each detail record. Requires 'Enrich with business detail'.

## `maxRecommendationsPerBusiness` (type: `integer`):

Optional cap on how many neighbor recommendations to keep per business. Leave empty for all available.

## `maxCitiesPerCategory` (type: `integer`):

In discovery mode (category with no locations), how many popular cities to walk for the category.

## `maxItems` (type: `integer`):

Stop after pushing this many business records in total.

## `pageDelaySeconds` (type: `integer`):

Optional politeness delay between directory pages. 0 = as fast as possible.

## `proxyConfiguration` (type: `object`):

Optional. Route requests through Apify Proxy for IP rotation at scale. Nextdoor's public directory has no anti-bot, so this is off by default.

## Actor input object example

```json
{
  "category": "Plumber",
  "locations": [
    "San Francisco, CA"
  ],
  "startUrls": [],
  "includeDetails": true,
  "includeRecommendations": true,
  "includeSimilar": false,
  "maxCitiesPerCategory": 15,
  "maxItems": 100,
  "pageDelaySeconds": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "category": "Plumber",
    "locations": [
        "San Francisco, CA"
    ],
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/nextdoor-business-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "category": "Plumber",
    "locations": ["San Francisco, CA"],
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/nextdoor-business-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "category": "Plumber",
  "locations": [
    "San Francisco, CA"
  ],
  "startUrls": []
}' |
apify call axlymxp/nextdoor-business-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axlymxp/nextdoor-business-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rgigwUXwRSmAcLYKa/builds/ddhipyXFd6XSYn9Gi/openapi.json
