Citysearch Real-Time Data Scraper avatar

Citysearch Real-Time Data Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Citysearch Real-Time Data Scraper

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

Emmanuel

Maintained by Community

Actor 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

CheckboxWhat 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 detailsSame 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 DetailsFull profiles for exact Citysearch business URLs you paste (/profile/<id>).
⭐ Reviews & RatingsPublic reviews per business URL — reviewer, date, text, source. Capped by maxReviewsPerBusiness (default 10).
🔗 Scrape By URLPaste any Citysearch business URL; returns the structured profile.
🔔 DeliveryOptional webhook (JSON or Slack) fired per record, in addition to the dataset.
🌐 ConnectionResidential proxy recommended; US default.

Every discovered business is exported — enrichment adds fields in place and never filters rows.

Input reference

  • enableBusinessSearch (boolean, default true) — 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, default 10) — max businesses per term + location.
  • searchFetchFullDetails (boolean, default false) — enrich search rows with full profiles in place.
  • enrichLeadDetails (boolean, default false) — add emails/socials from business websites in place.
  • leadDetailsSiteLookups (integer 1–6, default 3) — extra pages checked per business website.
  • enableBusinessDetails + businessUrls — e.g. https://www.citysearch.com/profile/18581644.
  • enableReviews + reviewBusinessUrls + maxReviewsPerBusiness (1–100, default 10).
  • 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 / leadEnriched flags).
  • 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.