← Health board

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.

97%golden-diff pass
Run it on Apify verified nightly

Verification

97%golden-diff success
334canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
business_namestring|null
member_idstring|null
chamber_namestring|null
chamber_citystring|null
countystring|null
statestring|null
categoriesarray|null
descriptionstring|null
phonestring|null
addressstring|null
citystring|null
zip_codestring|null
websitestring|null
logo_urlstring|null
facebookstring|null
instagramstring|null
linkedinstring|null
youtubestring|null
twitterstring|null
contact_repsarray|null
emailsarray|null
email_domain_matches_websiteboolean|null
enrichment_statusstring|null
source_urlstring|null
scraped_atstring|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

FieldTypeReqDefaultDescription
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