Local Lead Signal Extractor
Pricing
from $7.50 / 1,000 results
Local Lead Signal Extractor
Pricing
from $7.50 / 1,000 results
Rating
0.0
(0)
Developer
Fredrick Saruni
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Local Lead Signal Extractor is an Apify Actor for agencies, local-SEO consultants, and sales teams. It discovers businesses from Google Maps search queries or direct Google Maps search URLs, normalizes the listing data, optionally audits each business website, and returns an explainable 0–100 opportunity score.
The product is intentionally narrower than a generic place scraper: its output is organized around what to do next. Each record includes observable gaps such as no website, no contact path, no booking flow, low review volume, or weak rating signals.
Marketplace positioning: the Apify Store’s current popularity signals show substantial demand for Google Maps, social-media, search, website-content, and e-commerce Actors. This Actor differentiates itself by turning local-business discovery into a transparent prospecting workflow rather than returning raw place records only.
What it collects
For each unique business, the default dataset may include the business name, category-like label, address, phone number, Google rating, review count, Google Maps URL, external website URL, source query, and source location. When place-detail extraction is enabled, it opens the public Google Maps detail page to recover phone and website links that are absent from a compact search card. When website auditing is enabled, it also returns public emails and phone numbers, the final URL, HTTP status, page title, meta description, contact-path signal, booking-path signal, common social-profile signals, HTTPS signal, audited-page count, and any audit error. The export exposes publicPhones and publicEmails as top-level fields for CSV, spreadsheet, and CRM workflows.
The Actor emits opportunityScore, opportunityTier, and opportunityReasons. The score is not a prediction of commercial success; it is a transparent prioritization heuristic based only on observable signals.
Quick start on Apify
- Create or open an Actor from this project.
- Build the Actor using the included
Dockerfile. - Run it with the following input:
{"searchQueries": ["dentists", "roofers"],"location": "Austin, Texas","maxResultsPerQuery": 20,"scrapeWebsiteSignals": true,"websiteTimeoutSecs": 12,"skipClosed": true,"maxConcurrency": 2}
- Open the default dataset and use the Prospecting overview or Website and outreach signals view.
Input reference
| Input | Type | Default | Purpose |
|---|---|---|---|
searchQueries | array of strings | ["dentists"] | Business types or keywords to search. |
location | string | Austin, Texas | Location appended to each query. |
startUrls | array of request objects | [] | Optional direct Google Maps search URLs. |
maxResultsPerQuery | integer | 20 | Maximum result cards inspected per query or URL; capped at 100. |
scrapePlaceDetails | boolean | true | Open each public place detail page to recover phone and website links. |
scrapeWebsiteSignals | boolean | true | Enable or disable the lightweight website audit, including public email and phone extraction. |
websiteTimeoutSecs | integer | 12 | Per-site audit timeout, from 2 to 30 seconds. |
minRating | number | optional | Optional minimum Google rating from 0 to 5. |
skipClosed | boolean | true | Exclude listings that visibly indicate closure. |
maxConcurrency | integer | 2 | Parallel browser pages, from 1 to 5. |
proxyConfiguration | object | optional | Apify Proxy configuration for larger or more sensitive runs. |
At least one of searchQueries or startUrls must contain a value. Direct URLs should be Google Maps search URLs rather than individual place pages in this first release.
Opportunity score
The score is calculated deterministically and the reasons are emitted with each record. The current heuristic adds points for a missing website, a website that cannot be verified, no obvious contact path, no obvious booking or appointment path, no common social profile link, low review volume, a rating below 4.2, and no phone number. The total is capped at 100.
| Tier | Score range | Interpretation |
|---|---|---|
high | 70–100 | Multiple observable gaps; review manually before outreach. |
medium | 40–69 | Some gaps are present; suitable for secondary prioritization. |
low | 0–39 | Fewer gaps were detected by the heuristic. |
Run locally
The recommended local runtime is Node.js 20 or newer. Install dependencies and run the Actor with an input file through Apify’s local environment variables or by using the Apify CLI.
npm installnpm testnpm start
For a local smoke test, set an input object containing at least one search query. In a normal Apify run, Actor.getInput() reads the JSON configured in the Console or API. Browser-based extraction may need an Apify Proxy configuration and enough memory for Chromium.
Project files
| File | Purpose |
|---|---|
.actor/actor.json | Actor metadata and references to schemas. |
.actor/input_schema.json | Apify-generated input form and validation. |
.actor/output_schema.json | Default dataset output link. |
.actor/dataset_schema.json | Dataset field metadata and table views. |
src/main.js | Actor implementation and reusable scoring helpers. |
test/main.test.js | Deterministic unit tests. |
scripts/export_demo_csv.mjs | Spreadsheet-friendly CSV export helper. |
scripts/render_demo_results.mjs | Markdown and JSON demo-report helper. |
Dockerfile | Browser-enabled Apify runtime configuration. |
Responsible use
Use this Actor only for lawful and authorized data collection. Review Google’s terms, the terms of the websites you access, applicable privacy and data-protection law, and any contractual restrictions before running it. Do not use the output to send unsolicited bulk communications, infer sensitive personal attributes, bypass access controls, or collect data that you are not permitted to process. The website audit is intentionally limited to publicly reachable pages and does not attempt authentication or access-control bypasses.
Roadmap for a commercial Store release
The first production hardening priorities are selector monitoring against representative Google Maps locales, richer category and opening-hours extraction, configurable outreach-angle templates, stronger website URL validation, retry telemetry, and a changelog with versioned selector tests. A later release could add optional enrichment integrations, but the current version avoids mandatory third-party API keys so buyers can start with a simple run.
License
MIT