Local SEO for New York City: keyword research borough by borough
NYC local SEO at the city level is unwinnable for almost everyone. A search for "plumber NYC" returns Yelp at rank 1, HomeAdvisor at rank 2, a wall of paid ads above the fold, three Map Pack results held by aggregator-acquired listings, and an organic top 10 where every result has a Domain Score north of 55. The same query for "plumber Williamsburg" or "plumber Astoria" returns a SERP softer by 15+ DS points, with thin pages and missing schema at rank 4–10. The unit of competition is the neighborhood, not the city.
NYC SERPs at four resolutions
The pattern, in our SERPTool audit:
Five-borough queries (plumber NYC, dentist New York): top 10 avg DS 55–65, locked.
Borough queries (plumber Brooklyn, dentist Queens): top 10 avg DS 40–50, aggregator-dominated but contestable at rank 5–10.
Neighborhood queries (plumber Williamsburg, dentist Astoria): top 10 avg DS 28–38, frequently thin content at rank 4–10.
ZIP-code queries (plumber 11211, dentist 11106): top 10 avg DS 22–30, often only one or two genuinely-competing pages.
For most NYC service businesses, the neighborhood-and-ZIP layer is the entire opportunity.
Keyword patterns that work
[service] + [Brooklyn/Queens/Bronx neighborhood] — Williamsburg, Bushwick, Park Slope, Bedford-Stuyvesant, Crown Heights, Astoria, Long Island City, Forest Hills, Bay Ridge, Sunnyside, Jackson Heights. All carry distinct search intent. Pages keyed to these neighborhoods routinely outrank borough-positioned aggregators within months.
[service] + [Manhattan neighborhood] — Tribeca, SoHo, Chelsea, Upper East Side, Upper West Side, Lower East Side, Harlem, Washington Heights. Manhattan's neighborhoods are tighter than the outer-borough equivalents but still significantly softer than city-level queries.
[service] near [subway station] — New Yorkers orient by subway. "Dentist near Bedford Avenue", "physio near Union Square" capture intent that ZIP-code queries miss.
[service] in [Bronx/Staten Island neighborhood] — Riverdale, Pelham Bay, Mott Haven, Throgs Neck, Tottenville, St. George. Both boroughs have notably soft SERPs; Staten Island in particular has the weakest NYC SERPs by borough.
[service] + ZIP — 10001 (Chelsea), 11211 (Williamsburg), 11106 (Astoria), 10026 (Harlem), 11215 (Park Slope). ZIP-keyed queries are systematically under-targeted by aggregators.
What's working below the surface
The most exploitable NYC pattern is map-pack-locked, organic-soft: Map Pack ranks 1–3 are held by Yelp-acquired or HomeAdvisor-acquired listings, but the organic top 10 below the pack is full of thin pages with missing schema. A properly-built neighborhood page with explicit LocalBusiness schema, neighborhood-specific photos, real Google Reviews, and content keyed to the ZIP code lands at rank 4–6 quickly and progresses.
Verticals where the NYC gap is widest
- Trades in outer boroughs — Bronx, Staten Island, eastern Queens.
- Specialist healthcare — physical therapy, chiropractic, dental specialists keyed to specific neighborhoods.
- Tutoring and education — neighborhood-keyed SAT, GMAT, language tutoring.
- Specialist legal — neighborhood and community-keyed immigration, family, criminal defense.
- Niche food services — neighborhood-keyed prepared meals, catering, dietary specialists.
Where NYC is locked: Manhattan financial services, Manhattan nightlife and hospitality, anything that competes with the New York Times, Time Out NY, or Eater for editorial coverage.
The NYC strategy in one paragraph
For most NYC service businesses, the keyword research output is a borough page, three to five neighborhood pages within that borough, a ZIP FAQ on each, and a subway-station-adjacency callout where it fits the business. Skip city-level queries. Run bulk keyword research at the neighborhood + ZIP level — the Opportunity Score sort will surface 30–60 NYC queries genuinely winnable in the next 12 months.