Citysearch Real-Time Data Scraper
Pricing
from $1.00 / 1,000 results
Citysearch Real-Time Data Scraper
Live Citysearch business directory data: keyword + city search across US local businesses, full profiles, reviews & ratings, and lead enrichment with phones, websites, emails, and socials. Checkbox features stream structured JSON to your dataset in real time.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Emmanuel
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Citysearch Real-Time Data
Free trial: free Apify plans get 2 results per run. Paid plans are uncapped. See Free-tier trial below.
Live Citysearch business directory intelligence for agencies, local SEO teams, outreach operations, and CRMs. Search US local businesses by keyword + city, open full business profiles, collect public reviews, and enrich rows with lead details (phones, websites, emails, socials). Every record streams to your dataset as it is collected.
Who this is for
- Lead-gen agencies building outreach lists by service + city (plumbers in New York, dentists in Austin, roofers in Chicago).
- Local SEO teams auditing directory presence, categories, hours, and review signals across markets.
- Sales / RevOps enriching CRM records with verified phones, websites, emails, and social profiles.
- Market researchers tracking service coverage and business density by metro.
- Data teams feeding agents and pipelines with fresh, structured local-business rows.
Features
| Checkbox | What it does |
|---|---|
| 🔎 Business Search (default on) | Keyword + location search across the Citysearch directory. Prefilled with plumber / roofing contractor in New York, NY so first runs return in seconds. |
| Enrich with full business details | Same rows (detailsFetched: true) plus full profile: hours, categories, extra phones, coordinates, description. Adds a little extra time per record. |
| 🎯 Add lead details (emails & socials) | Same rows (leadEnriched: true) plus public emails and social profiles found on the business's own website. Nothing is ever dropped. |
| 🏢 Business Details | Full profiles for exact Citysearch business URLs you paste (/profile/<id>). |
| ⭐ Reviews & Ratings | Public reviews per business URL — reviewer, date, text, source. Capped by maxReviewsPerBusiness (default 10). |
| 🔗 Scrape By URL | Paste any Citysearch business URL; returns the structured profile. |
| 🔔 Delivery | Optional webhook (JSON or Slack) fired per record, in addition to the dataset. |
| 🌐 Connection | Residential proxy recommended; US default. |
Every discovered business is exported — enrichment adds fields in place and never filters rows.
Input reference
enableBusinessSearch(boolean, defaulttrue) — primary discovery.searchTerms(string[], default["plumber","roofing contractor"]) — e.g."dentist","auto repair","med spa". Required when search is on. Each term × each location is one task.searchLocations(string[], default["New York, NY"]) —"Austin, TX","Chicago, IL", or ZIP"10001". Required when search is on.searchMaxResults(integer 1–200, default10) — max businesses per term + location.searchFetchFullDetails(boolean, defaultfalse) — enrich search rows with full profiles in place.enrichLeadDetails(boolean, defaultfalse) — add emails/socials from business websites in place.leadDetailsSiteLookups(integer 1–6, default3) — extra pages checked per business website.enableBusinessDetails+businessUrls— e.g.https://www.citysearch.com/profile/18581644.enableReviews+reviewBusinessUrls+maxReviewsPerBusiness(1–100, default10).enableScrapeByUrl+scrapeUrls— any Citysearch business URL.webhookUrl(string) +webhookFormat(json|slack).proxyConfiguration— Residential, US default.
Empty input still runs the demo: Business Search on, plumber in New York, NY, 10 rows.
Output reference
One row per business (business_search, business_details, scrape_by_url) and one row per review (business_reviews). Filter dataset views by featureType.
Business fields: business_id, business_name, categories, primary_category, phone, extra_phones, website, website_domain, emails, email, street_address, city, state, postal_code, country, address_full, latitude, longitude, rating, review_count, years_in_business, claimed, open_status, hours, payments, description, social_links, social_urls, sponsored: false, position, search_term, search_location, page, detailsFetched, leadEnriched, url, scrapedAt.
Review fields: review_id, author, rating, date, text, provider, helpful_count, plus business_id, business_name, url, position, scrapedAt.
Webhooks
Set webhookUrl to receive each record in real time (dataset writes always happen first):
- JSON (
webhookFormat: "json") — full record object, ideal for Zapier / Make / n8n / CRM ingestion. - Slack (
webhookFormat: "slack") — Slack-friendly message with business name, phone, address, and source link.
Delivery is fire-and-forget: failures are logged and never stop the run.
MCP / AI-agent usage
Pair with the Apify MCP server so agents can call this Actor with natural language:
"Find 10 plumbers in New York on Citysearch with phones and websites, and enrich the top 5 with emails."
The agent maps that to searchTerms: ["plumber"], searchLocations: ["New York, NY"], searchMaxResults: 10, enrichLeadDetails: true.
FAQ
- Which connection should I use? Residential US is the default and the most reliable for directory searches at scale.
- How fresh is the data? Every run collects live directory results at run time — nothing cached, nothing pre-scraped.
- What does the free trial include? Free Apify plans get 2 results per run with an upgrade notice; the run still exits cleanly. Paid plans are uncapped.
- Do enrich toggles create extra rows? No — details and lead details merge into the same row (
detailsFetched/leadEnrichedflags). - Are partial records kept? Yes — every discovered business is saved, even when a website carries no extra contact details.
Free-tier trial
Free Apify plans are capped at 2 results per run (FREE_TIER_MAX_ITEMS=2, FREE_TIER_MODE=limit). The run finishes with a clean exit and an upgrade notice; the paywall block on OUTPUT records the cap. Owner env vars (FREE_TIER_MODE=block, PPE_EVENT_NAME=result) are configured in the Apify Console.