Chamber of Commerce Member Directory & Business Leads Scraper
Export every member of a Chamber of Commerce directory — business, phone, address, website, socials — and optionally the contact email crawled from each member's own site.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
business_name | string|null |
member_id | string|null |
chamber_name | string|null |
chamber_city | string|null |
county | string|null |
state | string|null |
categories | array|null |
description | string|null |
phone | string|null |
address | string|null |
city | string|null |
zip_code | string|null |
website | string|null |
logo_url | string|null |
facebook | string|null |
instagram | string|null |
linkedin | string|null |
youtube | string|null |
twitter | string|null |
contact_reps | array|null |
emails | array|null |
email_domain_matches_website | boolean|null |
enrichment_status | string|null |
source_url | string|null |
scraped_at | string|null |
Sample row
{
"business_name": "A2Z Media Group, LLC",
"chamber_name": "Concord Chamber of Commerce",
"phone": "(415) 404-6407",
"address": "1350 Arnold Dr., Suite 201",
"city": "Martinez",
"zip_code": "94553",
"website": "http://a2zmediagroup.com",
"categories": [
"Marketing/Advertising"
],
"facebook": "https://www.facebook.com/A2ZMediaGroup/",
"linkedin": "https://www.linkedin.com/company/a2z-media-group/",
"contact_reps": [
{
"name": "Zuleyka Jinks",
"title": "Owner/Partner"
}
],
"emails": [
{
"email": "info@a2zmediagroup.com",
"source_url": "http://a2zmediagroup.com/contact",
"type": "generic",
"confidence": "high"
}
],
"email_domain_matches_website": true,
"enrichment_status": "found",
"source_url": "https://business.concordchamber.com/list/member/a2z-media-group-llc-12179"
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
listChambers | boolean | no | false | If true, skip scraping and return the list of chambers this actor can scrape (city, county, chamber name, directory URL). Free — not charged. Use it to see which cities are available, then run again (or loop) with a 'county' or 'cities'. Optionally narrow the list with 'state'/'county'. |
county | string | no | "Contra Costa" | Select every indexed chamber in this county, e.g. 'Contra Costa'. Combine with 'state' to disambiguate. Leave empty if using 'cities' or 'directoryUrls'. |
counties | array | no | ["Contra Costa","Alameda"] | Select every indexed chamber across several counties in ONE run, e.g. 'Contra Costa' and 'Alameda'. Combined with 'County' if you fill both. Turn on Discovery Mode to see which counties are indexed. |
cities | array | no | [] | Select indexed chambers in these cities, e.g. ['Concord', 'Danville']. Case-insensitive. |
state | string | no | "CA" | Two-letter state code to scope 'county'/'cities' matching, e.g. 'CA'. |
categories | array | no | [] | Keep only members whose chamber category contains any of these terms (case-insensitive substring), e.g. ['insurance', 'marketing']. Empty = all members. |
enrichContacts | boolean | no | false | If true, crawl each member's own website for a contact email (adds the emails / enrichment fields). Off by default — the directory scrape is fast and cheap on its own. Charged only for members where a real email is found. |
maxResults | integer | no | — | Cap on member rows returned across the WHOLE run (all selected chambers combined) — a directory sweep can be large, so this is a spend control. Leave empty to return every member of every selected chamber. |
directoryUrls | array | no | [] | Escape hatch for a GrowthZone/ChamberMaster chamber not yet in the registry. Give the base directory URL, e.g. 'https://business.concordchamber.com'. |
proxyConfiguration | object | no | {"useApifyProxy":false} | Optional. Chamber directories are reachable directly; enable a proxy only if runs return no data because the IP is blocked. |
Pricing
Pay per result (member-row) — no charge for empty runs.
Example: 500 chamber members at $0.004/result ≈ $2.00.
FAQ
What does one run return?
Every member of the selected chamber(s) — business, phone, address, website, categories, social links, and listed reps. With enrichContacts on, each member's website is crawled for a contact email.
How do I pick which chambers to scrape?
Run with `listChambers: true` (free) to list the available cities/chambers, then run with a `county` (all chambers in it) or `cities`. Advanced: pass a directory URL directly via `directoryUrls`.
Where do the emails come from?
Chambers don't publish member emails, so the actor crawls each member's own website (homepage + contact/about/team pages) and extracts the contact address, flagging franchise/corporate ones.
How am I charged?
Pay-per-result: one charge per member row, plus a second charge only for members where enrichment finds a real email. Empty and email-less runs don't over-charge.
Which directories are supported?
Chambers on the GrowthZone / ChamberMaster / MicroNet platform (the most common). Seeded with Contra Costa County, CA; more are added over time.
Guides & use cases
Related actors