Local Lead Signal Extractor avatar

Local Lead Signal Extractor

Pricing

from $7.50 / 1,000 results

Go to Apify Store
Local Lead Signal Extractor

Local Lead Signal Extractor

Pricing

from $7.50 / 1,000 results

Rating

0.0

(0)

Developer

Fredrick Saruni

Fredrick Saruni

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

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

  1. Create or open an Actor from this project.
  2. Build the Actor using the included Dockerfile.
  3. Run it with the following input:
{
"searchQueries": ["dentists", "roofers"],
"location": "Austin, Texas",
"maxResultsPerQuery": 20,
"scrapeWebsiteSignals": true,
"websiteTimeoutSecs": 12,
"skipClosed": true,
"maxConcurrency": 2
}
  1. Open the default dataset and use the Prospecting overview or Website and outreach signals view.

Input reference

InputTypeDefaultPurpose
searchQueriesarray of strings["dentists"]Business types or keywords to search.
locationstringAustin, TexasLocation appended to each query.
startUrlsarray of request objects[]Optional direct Google Maps search URLs.
maxResultsPerQueryinteger20Maximum result cards inspected per query or URL; capped at 100.
scrapePlaceDetailsbooleantrueOpen each public place detail page to recover phone and website links.
scrapeWebsiteSignalsbooleantrueEnable or disable the lightweight website audit, including public email and phone extraction.
websiteTimeoutSecsinteger12Per-site audit timeout, from 2 to 30 seconds.
minRatingnumberoptionalOptional minimum Google rating from 0 to 5.
skipClosedbooleantrueExclude listings that visibly indicate closure.
maxConcurrencyinteger2Parallel browser pages, from 1 to 5.
proxyConfigurationobjectoptionalApify 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.

TierScore rangeInterpretation
high70–100Multiple observable gaps; review manually before outreach.
medium40–69Some gaps are present; suitable for secondary prioritization.
low0–39Fewer 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 install
npm test
npm 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

FilePurpose
.actor/actor.jsonActor metadata and references to schemas.
.actor/input_schema.jsonApify-generated input form and validation.
.actor/output_schema.jsonDefault dataset output link.
.actor/dataset_schema.jsonDataset field metadata and table views.
src/main.jsActor implementation and reusable scoring helpers.
test/main.test.jsDeterministic unit tests.
scripts/export_demo_csv.mjsSpreadsheet-friendly CSV export helper.
scripts/render_demo_results.mjsMarkdown and JSON demo-report helper.
DockerfileBrowser-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