Business Profile Enricher
Pricing
from $15.00 / 1,000 enrichments
Business Profile Enricher
Extract emails, phone numbers, owner names, services, and 15+ data points from any business website using AI. Works on any site — WordPress, Wix, Squarespace, custom builds. Feed it URLs directly or enrich a Google Maps Scraper dataset.
Pricing
from $15.00 / 1,000 enrichments
Rating
5.0
(1)
Developer
Douglas Page
Maintained by CommunityActor stats
0
Bookmarked
19
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
Extract structured business data from any website using AI. Get emails, phone numbers, owner/staff names, services, social media links, certifications, and more — all from a business website URL.
Unlike CSS-based scrapers that only grab data from one platform, this enricher reads the actual website content using AI, so it works on any business site regardless of how it's built.
What data do you get?
For each business URL, you get:
| Field | Example |
|---|---|
| Business Name | The Smith Law Firm, LLC |
| Description | Family law firm serving the St. Louis area since 1998 |
| Emails | neil@smithlawfirm.com |
| Phones | (314) 725-4400 |
| People | Neil Smith — Attorney |
| Services | Dissolution of Marriage, Child Custody, Paternity, ... |
| Social Links | Facebook, Instagram, Twitter, LinkedIn, YouTube, TikTok, Yelp |
| Year Established | 1998 |
| Address | 231 S. Bemiston Ave., Suite 800, St. Louis, MO 63105 |
| Service Area | St. Louis, St. Charles |
| Certifications | Licenses, bar admissions, BBB ratings |
| Hours | Mon-Fri 9am-5pm |
| Languages | English, Spanish |
| Payment Methods | Credit card, financing, insurance accepted |
The enricher automatically follows up to four high-value subpages per business (About, Contact, Team, Services) to maximise coverage. Most sites expose an About and a Contact page; dedicated Team pages are less common, so people data is richer on sites that publish one.
How to use it
Option 1: Provide URLs directly
Paste a list of business website URLs. Works with any website.
{"mode": "urls","urls": ["https://www.smithlawfirm.com","https://www.abrahamwatkins.com","https://www.benfranklinplumbing.com"]}
Option 2: Enrich a Google Maps Scraper dataset
Already scraped businesses with the Google Maps Scraper? Pass the dataset ID and we'll enrich every business that has a website.
{"mode": "dataset","datasetId": "AXu06pVFRUYhGQ9Su"}
How it works
- Fetches the homepage of each business website
- Discovers subpages — looks for About, Contact, Team/Staff and Services pages, and fetches up to four of them
- AI extraction — sends the combined page content to an AI model that reads the site like a human and extracts structured data
- Returns clean JSON — every business gets a consistent profile with all available fields
Why use AI extraction instead of CSS scraping?
Traditional scrapers break when a website changes its layout. They also can't handle the massive variety of small business websites — every plumber, lawyer, and dentist has a different site structure.
AI extraction reads the page content and understands what it means, regardless of how the HTML is structured. This means:
- Works on any website — WordPress, Squarespace, Wix, custom builds
- Never breaks — no selectors to maintain
- Extracts meaning — finds "John Smith, Managing Partner" on an About page, not just raw text
Output format
Each dataset row carries flat fields for easy CSV export, plus a nested enrichmentData object holding the complete profile for programmatic use.
| Field | Type | Notes |
|---|---|---|
url | string | The URL you submitted |
businessName | string | Official name as published on the site |
description | string | One to three sentences in the business's own words |
emails | string | Comma-separated, ready for a spreadsheet |
phones | string | Comma-separated, original formatting preserved |
facebook, instagram, twitter, linkedin, youtube, tiktok, yelp | string | One column per network, empty when absent |
people | array | Staff found on the site — see below |
peopleCount | number | How many people were found |
services | string | Comma-separated list of services or practice areas |
servicesCount | number | How many services were found |
yearEstablished | number | Founding year when stated |
certifications | string | Licences, bar numbers, board certifications, accreditations |
serviceArea | string | Cities, counties or regions served |
hoursOfOperation | string | Opening hours as published |
address | string | Full street address |
languages | string | Languages the business operates in |
paymentMethods | string | Payment methods and insurance accepted |
fieldsFound | number | Populated field count — drives billing, see Pricing |
confidence | string | high, medium or low |
pagesAnalyzed | number | How many pages were read for this business |
processingTimeMs | number | Time spent on this business |
enrichmentData | object | The full nested profile |
People and attributed emails
Every entry in people carries a name, their role where the site states one, and linked_email — that person's published address:
"people": [{ "name": "Jane Smith", "title": "Managing Partner", "linked_email": "jsmith@smithlaw.com" },{ "name": "Tom Reed", "title": "Associate", "linked_email": null }]
linked_email is set only where the site prints an address inside that person's own entry — their bio, staff card, or row in a directory. We never build an address from someone's name and the company domain, and anything that doesn't also appear in the business's email list is discarded.
Expect null far more often than not. Most small businesses simply don't publish per-person addresses; of the profiles we return that contain people, roughly 40% have any attributable address at all. Where a site lists one shared address against several staff, each of them carries that same value — that is what the page says.
Integrations
Works with Apify's full integration ecosystem: Zapier, Make, Google Sheets, webhooks, REST API, and more.
Pricing
$15 per 1,000 results ($0.015 per business).
You only pay for URLs where we extract meaningful data. A "result" is a dataset row with at least 3 populated fields (e.g. business name + emails + services, or business name + description + phones). Thin extractions — where the AI could only confirm a business name and nothing else — are skipped from the dataset and not charged. You'll see them logged in the run output as ○ <url> — only N field(s) found, not enough to charge.
URLs that fail outright (DNS error, 404, timeout, etc.) are also not charged.
Just need contact info (emails, phones, social)? The lighter-weight Contact Finder runs the same extraction with a contacts-only schema at $10/1K.
About the developer
This actor is built and maintained by Menus API — structured data extraction APIs for developers. Also see our Restaurant Menu Scraper and the lighter-weight Contact Finder if you only need contact info.
Need high-volume direct API access instead of Apify? Email support@menusapi.com.