Nextdoor Scraper
Pricing
from $0.01 / 1,000 results
Nextdoor Scraper
Scrape local business recommendations, neighborhood posts, and community data from Nextdoor. Get authentic local insights and recommendations that aren't available on other platforms.
Pricing
from $0.01 / 1,000 results
Rating
1.0
(1)
Developer
The Howlers
Maintained by CommunityActor stats
10
Bookmarked
209
Total users
21
Monthly active users
11 hours ago
Last modified
Share
Nextdoor Business Profile Scraper
Scrape Nextdoor business profiles, recommendations, reviews, and neighborhood posts. Extract business name, address, phone, recommendation count, reviews, and category.
Read this first: how Nextdoor scraping actually works
Nextdoor now shows a login wall on most public pages. That means the only reliable way to get real data is to give the actor your own Nextdoor session cookies. The actor has three modes, in order of how well they work:
- Session cookies (Mode 3): RECOMMENDED. You paste your Nextdoor login cookies. This unlocks recommendations, posts, business listings, and events. This is the mode that works.
- Public /pages/ URLs (Mode 1): best-effort, not recommended. Scrapes public business pages with no login. It is easily blocked and often returns nothing, because Nextdoor login-walls public pages.
- Google discovery (Mode 2): best-effort, not recommended. Searches Google to find Nextdoor pages, then scrapes them. Same limitation as Mode 1.
If you just want it to work, use Mode 3. Modes 1 and 2 are kept for the occasional page that is still public, but do not rely on them.
There is also a Demo Mode that returns fake sample data (for example "Mike's Plumbing") so you can see the output shape without any credentials. Demo Mode is OFF by default. It never returns real Nextdoor data.
Quick start (Mode 3, recommended)
Step 1: Export your Nextdoor cookies
- Install the free Cookie-Editor browser extension (Chrome, Edge, or Firefox).
- Open nextdoor.com in that browser and make sure you are logged in.
- Click the Cookie-Editor icon while you are on the Nextdoor tab.
- Click Export (bottom of the Cookie-Editor panel), then choose JSON. This copies a JSON array of cookies to your clipboard.
Step 2: Run the actor
Paste that JSON array into sessionCookies and set the neighborhoods you want:
{"sessionCookies": "[{\"name\":\"...\",\"value\":\"...\",\"domain\":\".nextdoor.com\"}]","neighborhoods": ["miami-beach-fl"],"scrapeType": "recommendations","maxResults": 100,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
That is the whole setup. scrapeType can be recommendations, posts, businesses, or events.
Where do I find the neighborhood slug? Open any neighborhood on Nextdoor and look at the URL: nextdoor.com/neighborhood/SLUG/. The SLUG part (for example miami-beach-fl) is what you put in neighborhoods.
Cookies expire. When they do, you will get a clear "login wall" message. Just re-export from Cookie-Editor (Step 1) and run again. To avoid re-pasting, see "Auto-refresh" below.
Try Demo Mode first (optional, free, no cookies)
Want to see the output format before setting up cookies? Turn Demo Mode on:
{ "demoMode": true, "maxResults": 5 }
This returns fake sample businesses so you can wire up your workflow. Remember to turn it off and add cookies to get real data.
Modes 1 and 2 (no auth, best-effort only)
These do not require cookies but are easily blocked. Use them only if Mode 3 is not an option and accept that they often return nothing.
Mode 1, direct public URLs:
{ "businessPageUrls": ["https://nextdoor.com/pages/motz-plumbing-north-miami-fl/"] }
Mode 2, Google discovery:
{ "searchTerms": ["plumber", "electrician"], "city": "Miami, FL" }
Auto-refresh (optional, hands-off sessions)
If you run this on a schedule, you can let it re-login automatically when the session expires, using the companion Cookie Manager actor. Capture your cookies once with Cookie Manager (it stores them under a key), then:
{"cookieStorageKey": "nextdoor-yourname","neighborhoods": ["miami-beach-fl"],"scrapeType": "posts","autoRefreshCookies": true,"refreshEmail": "you@example.com","refreshPassword": "your-nextdoor-password","proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
When a run hits a login wall, the actor calls Cookie Manager in refresh mode, logs back in, rewrites the shared cookies, and continues. refreshPassword is stored encrypted.
Continuous monitoring (new-leads-only)
For live home-services lead monitoring, run on a schedule in posts mode with onlyNewSince enabled:
{"cookieStorageKey": "nextdoor-yourname","neighborhoods": ["your-neighborhood-1", "your-neighborhood-2"],"scrapeType": "posts","searchQuery": "plumber","onlyNewSince": true,"maxNeighborhoodsPerRun": 5,"autoRefreshCookies": true,"refreshEmail": "you@example.com","refreshPassword": "your-nextdoor-password","proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] },"webhookUrl": "https://hooks.your-crm.com/nextdoor-leads"}
How it works:
- Only new posts. The actor remembers each post's stable ID and the newest post timestamp per neighborhood in a named Key-Value Store (
seenStateKvStoreName). The first run seeds the baseline and emits everything. Every run after that emits only posts that appeared since the last run, so scheduled runs surface fresh leads instead of re-sending the whole feed. - Rich post fields. Each emitted post includes
postId,postUrl,title,content,author,neighborhood,date,upvotes,commentCount, andbusinessMentions, ready to route into a CRM or webhook. - Human-like pacing. Requests are serialized with a jittered delay, and
maxNeighborhoodsPerRuncaps each run's footprint. - Session self-healing. With
autoRefreshCookieson, an expired session is re-logged-in via the Cookie Manager actor and the run continues. - Residential IPs. Authenticated mode defaults to a RESIDENTIAL proxy group when Apify proxy is enabled without an explicit group. Datacenter IPs get login-walled quickly on neighborhood feeds.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
sessionCookies | string | - | RECOMMENDED. JSON array of Nextdoor cookies exported from the Cookie-Editor extension. Unlocks recommendations, posts, businesses, and events. Pair with neighborhoods. |
neighborhoods | array | - | Neighborhood slugs to scrape in authenticated mode. Required with sessionCookies. Find the slug in nextdoor.com/neighborhood/SLUG/. |
scrapeType | string | recommendations | Authenticated content type: recommendations, posts, businesses, or events. |
cookieStorageKey | string | - | Optional. Load cookies automatically from the Cookie Manager actor's Key-Value Store instead of pasting them. |
cookieKvStoreName | string | cookie-sessions | KV Store name Cookie Manager saves to. Only change if you customized it. |
autoRefreshCookies | boolean | false | On login wall, call Cookie Manager to re-login and continue. Requires cookieStorageKey, refreshEmail, refreshPassword. |
cookieManagerActorId | string | cookie-manager | Actor to call for refresh. Use a username-scoped ID if renamed. |
refreshEmail | string | - | Nextdoor email, used only for auto-refresh. |
refreshPassword | string | - | Nextdoor password (stored encrypted), used only for auto-refresh. |
businessPageUrls | array | - | Mode 1, best-effort. Direct /pages/ URLs to scrape with no login. Often blocked. |
searchTerms | array | - | Mode 2, best-effort. Business types to find via Google. Requires city. Often blocked. |
city | string | - | City and state for Google discovery (for example Miami, FL). Required with searchTerms. |
searchQuery | string | - | Filter results by keyword. Applied to all modes. |
category | string | all | Filter by business category (authenticated mode). |
maxResults | integer | 100 | Maximum items to return. |
onlyNewSince | boolean | false | Continuous-monitoring dedup. Emits only posts new since the previous run. First run seeds the baseline. |
seenStateKvStoreName | string | nextdoor-monitor-state | KV Store holding the per-neighborhood high-water mark for onlyNewSince. Keep stable across runs. |
maxNeighborhoodsPerRun | integer | 0 | Cap neighborhoods per run (0 = no cap). |
includeComments | boolean | false | Extract comments and replies on posts (slower). |
minRecommendations | integer | 0 | Only include businesses with at least this many recommendations. |
proxyConfiguration | object | - | Proxy settings. RESIDENTIAL is recommended and defaults on for authenticated scraping. |
demoMode | boolean | false | Returns fake sample data for testing your integration. Not real Nextdoor data. Leave off and use cookies for real results. |
webhookUrl | string | - | POST results here when scraping completes (Zapier, Make, n8n, custom). |
Pricing
Pay-per-event billing:
| Event | Description | Price |
|---|---|---|
| Business Scraped | Each Nextdoor business profile scraped | $0.06 |
Demo Mode is free. Runs that return zero real results are not charged.
Troubleshooting
"Nextdoor blocked authenticated scraping with a login wall"
Your session cookies are expired, or they were captured while you were logged out of Nextdoor. Fix: log into nextdoor.com in your browser, re-export cookies with the Cookie-Editor extension (choose JSON), and paste them into sessionCookies. To recover automatically on expiry, set autoRefreshCookies with refreshEmail and refreshPassword.
"Cookies were rejected before we could log in"
The value in sessionCookies was not a valid JSON array. It must be the full array from Cookie-Editor. In Cookie-Editor, click Export, choose JSON, and paste the entire thing (it starts with [ and ends with ]). Do not paste a single cookie or a screenshot.
"0 results" on a no-auth run
You used Mode 1 (businessPageUrls) or Mode 2 (searchTerms) with no cookies. Nextdoor login-walls most public pages, so these modes often return nothing. Switch to Mode 3: add sessionCookies and neighborhoods.
"Google discovery found no Nextdoor pages"
Mode 2 is best-effort and frequently returns nothing. Use Mode 3 (session cookies) for reliable results, or provide direct /pages/ URLs in businessPageUrls.
"No NEW posts since the last run"
This is not an error. With onlyNewSince on, the session is healthy and nothing new was posted in the monitored neighborhoods since the previous run.
I do not have a Nextdoor account
Modes 1 and 2 do not need one, but they are unreliable. For dependable data you need an account so you can export session cookies. A free Nextdoor account is enough.
How do I test without cookies?
Set demoMode to true. It returns realistic fake sample data so you can verify the output format, then turn it off and add cookies for real data.
Built by John Rippy | Actor Arsenal