ActorStack.dev

Building a local B2B lead list from Nextdoor, field by field

Which Nextdoor fields are usable for outreach, what the fill rates mean for a target list of a given size, and how to avoid building a list that is 40% dead ends.

By Oswaldo Carabano8 min read

Short answer

For local B2B outreach, the usable Nextdoor fields are phone (93.9% filled), website (77.2%) and email (62.6%), measured over 741 businesses. Because coverage compounds, a list that requires both an email and a phone number will be roughly 60% of your row count, so scrape for the constraint you actually need rather than sorting it out afterwards.

Key points

  • Phone is the highest-coverage contact channel at 93.9%; email at 62.6% is the constraint on any email-first campaign.
  • Requiring two channels multiplies the coverage penalty: plan the row count around the field you cannot do without.
  • `is_verified` and `recommendations_count` are the two cheapest qualification signals in the record.
  • Businesses that hid their address return `null` across every address field — they are often sole traders working from home, which may be your best segment or your worst depending on the offer.
  • Nextdoor business contact details are published by the businesses for the purpose of being contacted; neighbor content is a different category and stays off by default.
On this page7 sections

Nextdoor is an unusually good source for local B2B lead lists, for one structural reason: the businesses on it published their own contact details in order to be contacted. That is a different provenance from a directory that scraped them from somewhere else. The catch is coverage — three usable channels with three different fill rates — and the arithmetic is worth doing before the run rather than after.

Which fields are actually usable

Measured over 741 businesses across 5 cities and 12 categories:

ChannelFilledPractical note
phone_number93.9%E.164. The default channel if you have to pick one.
website_url77.2%Often social rather than a domain, so it is a weak enrichment key.
email62.6%The constraint on any email-first sequence.

The coverage arithmetic nobody does first

Requiring one field costs you the inverse of its fill rate. Requiring two costs you more than either, because the gaps are only partly correlated — a business with no website often has no email either, but not always.

Working from the measured rates, for a target of 500 contactable businesses:

  • Phone is enough: about 535 rows.
  • Email required: about 800 rows.
  • Phone and email both required: roughly 830 rows, and the exact figure depends on the category mix.

At $0.008 per business that is the difference between $4.30 and $6.60 — trivial. The reason to do the arithmetic is not cost, it is that discovering the constraint after the run usually means re-running with a different city list, and by then you have a half-built campaign shaped around the wrong row count.

Qualifying inside the dataset

Two fields do most of the qualification work before you export anything. is_verified is Nextdoor's own check, and recommendations_count tells you whether neighbors have said anything at all — 42.4% of businesses have at least one recommendation, and those are measurably the more established half of any category.

recommendations_summary, present on 47.4%, is Nextdoor's one-line synthesis of neighbor commentary. As a qualification signal it is cheap and surprisingly good: a business with a summary mentioning responsiveness is a business somebody actually hired.

If you are scoring leads on sentiment, filter recommendations by kind first. Half the feed is neighbors asking for a provider, not reviewing one — the measured split.

City list or trade area?

A local services business usually serves a catchment rather than a municipality, and Nextdoor's directory happens to return exactly that when you let it: it is distance-ordered and continues into neighbouring towns once the requested city runs out.

So decide which one you want. For a campaign scoped to a city, set onlyRequestedCity: true and the filtering happens during discovery, so dropped rows are never charged. For a campaign scoped to a region, raise the cap and let the overflow happen deliberately — every row carries address_city, so you can always segment afterwards.

The businesses that hid their address

A meaningful share of local providers set their address to private, because the address is their home. Those rows return null across every address field with hide_address: true — and they are frequently the most responsive segment in a category, because they are sole traders who answer their own phone.

Whether that is your best segment or your worst depends entirely on the offer. What matters is not to drop them accidentally through a “has an address” filter you added for hygiene reasons.

A concrete recipe: 500 qualified local services

input.json
{
  "cities": [
    "san-clemente--ca",
    "san-juan-capistrano--ca",
    "dana-point--ca",
    "laguna-niguel--ca",
    "mission-viejo--ca"
  ],
  "categories": ["Plumber", "Electrician", "Landscaper", "Roofer"],
  "maxBusinessesPerCity": 120,
  "onlyRequestedCity": true,
  "includeRecommendations": true,
  "maxRecommendationsPerBusiness": 20,
  "includeCityData": false
}

Five cities at 120 each, split across four categories, is up to 600 businesses for roughly $4.80, plus recommendations at $0.002 each. Then filter: keep rows with a phone number, sort by recommendations_count descending, and you have a prioritised list where the top of it is provably active.

Turn city data off unless you need it. At $0.008 per city it is cheap, but a lead list does not use it and the rows land in a separate dataset anyway.

Where the compliance line sits

Business contact details published by a business so that customers can contact them are the least contentious category of scraped data there is. That does not make every use of them lawful: the rules that govern unsolicited commercial contact depend on where you are, where the recipient is, and whether the contact is to a business or an individual.

Two practical notes rather than legal advice. First, a sole trader working from a home address is closer to an individual than a company, and the hide_address flag is a decent signal for that. Second, neighbor content is a different category entirely and is off by default in this Actor for exactly that reason — see which data creates which obligation.

Frequently asked questions

Can I get business emails from Nextdoor?
On 62.6% of businesses, measured over 741. Phone numbers are considerably better covered at 93.9%, so an email-first list will be smaller than the row count suggests.
Is Nextdoor business data usable for cold outreach?
The contact details are published by the businesses themselves for the purpose of being contacted, which is the relevant distinction. Whether a specific campaign is lawful depends on where you and the recipient are — that is a question for your own compliance, not for a scraper's documentation.
How many rows do I need for 500 contactable businesses?
About 535 if a phone number is enough, and roughly 800 if you require both a phone and an email. That arithmetic is the reason to declare the constraint before the run rather than after it.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 18 Aug 2026
    Nextdoor Business & Reviews Scraper — Actor README and input schemaActorStack / Apify Store
  2. Operator claimchecked 18 Aug 2026
    Nextdoor for BusinessNextdoor
  3. Law or regulatorchecked 18 Aug 2026
    California Consumer Privacy Act (CCPA)California Attorney General
A suburban residential street of detached houses with cars parked along the kerb.
NextdoorGuide

Scrape Nextdoor business listings

A complete walkthrough: how Nextdoor exposes business data to signed-out visitors, how to select cities and categories, what a first run costs, and how to read the 34 fields you get back.

9 min
A row of residential mailboxes on posts in front of a wooden fence and trees.
NextdoorReference

Nextdoor city slugs

Nextdoor identifies a city as `city-name--state`. The rule sounds trivial and breaks on saints, hyphens and states that share a city name — here is the exact format and how to confirm a slug before spending a run on it.

5 min
A desk with stacked legal reference books, loose documents and a newspaper.
NextdoorExplainer

Is it legal?

The interesting question is not "is scraping legal" but which specific data creates which specific obligation. Public business contact details and neighbor posts are not the same thing.

7 min