Local Business Lead Enrichment Pack
Pricing
Pay per usage
Local Business Lead Enrichment Pack
Enriches local business websites by crawling the homepage and likely contact/about pages on the same origin.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Brian Keefe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Production-ready Node.js Apify Actor for bounded local business website enrichment.
This actor is strongest when you provide startUrls, domains, or businesses with a known website. keywordLocationPairs are supported only as deterministic seed records when public search discovery is unavailable, so Maps/search-style inputs are optional and best-effort.
What It Does
- Accepts
startUrls,domains,businesses,keywordLocationPairs,maxPagesPerSite, andrequestTimeoutSecs - Enriches each supplied business/site with same-origin bounded crawling
- Fetches the homepage plus likely contact/about pages first
- Extracts:
- business identity
- website/homepage/contact page URL
- visible phones and emails
- social links
- schema.org JSON-LD
- title and meta description
- schema rating and review count when available
- Computes flags:
noWebsitenoHttpsmissingContactPagemissingSocialsnoVisibleEmailweakTitleMetaoutdatedCopyright
- Writes one output record per input business/site to the default dataset
- Writes aggregate counts to the
SUMMARYkey in the default key-value store
Files
.actor/actor.json.actor/input_schema.jsonsrc/main.jssrc/extractor.jsexamples/sample-input.jsonexamples/sample-output.jsontests/smoke.test.js
examples/sample-output.json is a representative record set produced by the bundled offline fixture used in the smoke test.
Input
Example:
{"startUrls": [{ "url": "https://example.com" }],"domains": ["example.org"],"businesses": [{"name": "Acme Dental","domain": "acmedental.test","location": "Springfield, IL"}],"keywordLocationPairs": [{ "keyword": "dentist", "location": "Springfield, IL" }],"maxPagesPerSite": 4,"requestTimeoutSecs": 15}
Input notes:
startUrls: best option when you already know the websitedomains: actor trieshttps://first and falls back tohttp://businesses: accepts string names or objects withname,url,domain,locationkeywordLocationPairs: produces deterministic seed records if no public search discovery is availablemaxPagesPerSite: hard cap on same-origin pages fetched per siterequestTimeoutSecs: per-request timeout
Output
Each dataset item is one business/site record. Representative fields:
{"recordType": "website","sourceType": "startUrl","businessName": "Acme Dental","website": "https://acme.example","homepageUrl": "https://acme.example","contactPageUrl": "https://acme.example/contact","phones": ["+1 555 222 3333"],"emails": ["hello@acme.example"],"socialLinks": ["https://www.facebook.com/acme"],"title": "Acme Dental | Family Dentist in Springfield","metaDescription": "Acme Dental provides family dentistry in Springfield.","schemaOrg": [],"ratingValue": 4.8,"reviewCount": 127,"flags": {"noWebsite": false,"noHttps": false,"missingContactPage": false,"missingSocials": false,"noVisibleEmail": false,"weakTitleMeta": false,"outdatedCopyright": false},"suggestedOutreachAngle": "Lead with a concise website improvement pitch: ..."}
The actor also stores a SUMMARY object in the key-value store with totals and flag counts.
Local Usage
Install:
$npm install
Run tests:
$npm test
Run smoke test only:
$npm run smoke
Run actor locally with Apify local storage:
$APIFY_LOCAL_STORAGE_DIR=./storage npm start -- --input=examples/sample-input.json
If you prefer, you can also place the input in storage/key_value_stores/default/INPUT.json and run npm start.
Publish Command
When ready to publish to Apify:
$apify push
Limitations
- Website/domain inputs are the robust path
keywordLocationPairsdo not use Google login, Maps login, or brittle authenticated scraping- Pages outside the original origin are ignored
- The actor is intentionally bounded and may miss deep contact details hidden behind complex JS apps or forms
outdatedCopyrightis heuristic and based on visible page text