Chamber of Commerce Member Directory Scraper avatar

Chamber of Commerce Member Directory Scraper

Pricing

Pay per event

Go to Apify Store
Chamber of Commerce Member Directory Scraper

Chamber of Commerce Member Directory Scraper

Extract member businesses from US chamber-of-commerce directories. Walks each chamber sitemap and pulls business name, address, phone, website, social links, categories, and description. Supply one or more chamber URLs (GrowthZone / ChamberMaster platform).

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Scrape member businesses from local US chamber-of-commerce directories. Returns business name, address, phone, website, social links, categories, hours, description, and chamber metadata for every member listed in each chamber's public directory — pointed at one chamber or several.

The scraper targets chambers running on the GrowthZone / ChamberMaster SaaS platform, which powers roughly 80% of US local chambers and exposes a clean SiteMap.xml plus a consistent /list/member/<slug-id> template. No proxy required. Plain server-rendered HTML.


Chamber of Commerce Scraper Features

  • Extracts business name, full street address, city, state, ZIP, phone, and website
  • Returns categories, hours of operation, and the member-supplied description
  • Captures social links — Facebook, LinkedIn, Twitter/X, Instagram, YouTube — when listed
  • Tags every record with the chamber name and chamber host so multi-chamber crawls stay sortable
  • Sitemap-driven discovery — finds every member URL the chamber has indexed
  • Round-robin sampling across multiple chambers, so a small maxItems cap mixes results instead of draining the first chamber's "A" entries
  • Filters by US state code
  • Auto-detects GrowthZone / ChamberMaster pages and skips anything else

Chamber of Commerce Scraper Input Options

FieldTypeDefaultDescription
chamberUrlsarray["https://business.lubbockchamber.com"]One or more chamber directory URLs. Each entry should point at the chamber's GrowthZone host (typically business.<chamber>.com or similar).
statesarray[]US state codes to keep (e.g. ["TX", "CA"]). Empty means no state filter.
maxItemsinteger15Maximum number of member businesses to extract across all supplied chambers. Tester runs cap at 5 minutes — keep small for testing. A typical chamber has 1,000–3,000 members.

Input Examples

Default — 15 records from one chamber:

{
"chamberUrls": ["https://business.lubbockchamber.com"],
"maxItems": 15
}

Two chambers, round-robin sampling:

{
"chamberUrls": [
"https://business.lubbockchamber.com",
"https://business.wccchamber.com"
],
"maxItems": 50
}

Texas-only members of a chamber that spans state lines:

{
"chamberUrls": ["https://business.lubbockchamber.com"],
"states": ["TX"],
"maxItems": 200
}

Full harvest — one chamber, no cap-friendly buffer:

{
"chamberUrls": ["https://business.lubbockchamber.com"],
"maxItems": 5000
}

Chamber of Commerce Scraper Output Fields

FieldTypeDescription
business_namestringBusiness or organization name
addressstringFull street address (multiple lines joined with commas)
citystringCity
statestringUS state code (e.g. TX)
zipstringZIP code
phonestringPublic phone number as listed on the profile
emailstringPublic email when exposed. Most chambers route email through a reCAPTCHA-gated contact form, so this field is usually null.
websitestringMember website URL
descriptionstringMember-supplied "About" copy with the heading stripped
categoriesarrayBusiness categories the member is filed under (e.g. ["Restaurants", "Catering"])
hoursstringHours of operation as listed
logo_urlstringMember logo image URL
social_linksarraySocial media URLs — Facebook, LinkedIn, Twitter/X, Instagram, YouTube
chamber_namestringName of the chamber the member belongs to
chamber_hoststringHostname of the chamber directory
profile_urlstringCanonical URL of the member detail page
scrapedAtstringISO timestamp when the record was scraped

Sample Output

{
"business_name": "50th Street Caboose",
"address": "5027 50th St.",
"city": "Lubbock",
"state": "TX",
"zip": "79414",
"phone": "(806) 796-2240",
"email": null,
"website": "http://www.cabooseonline.com",
"description": "Full service restaurant, gameroom and sports bar featuring a variety of menu items ranging from authentic Mexican cuisine to steak. Reservations can be made at (806) 796-2240. A casual atmosphere and medium price range. Caboose Catering - flexible menus & pricing. ''Let us cater your next event''.",
"categories": [
"Restaurants",
"Amusements",
"Catering",
"Family Entertainment Center",
"Party Services & Facilities - Children",
"Restaurants & Bars"
],
"hours": null,
"logo_url": null,
"social_links": [
"https://www.facebook.com/CabooseLubbock",
"https://twitter.com/50thStCaboose",
"https://www.youtube.com/user/50thStCaboose",
"https://instagram.com/50thstreetcaboose/"
],
"chamber_name": "Lubbock Chamber of Commerce",
"chamber_host": "business.lubbockchamber.com",
"profile_url": "https://business.lubbockchamber.com/list/member/50th-street-caboose-4779",
"scrapedAt": "2026-05-02T13:14:50.231Z"
}

How Chamber of Commerce Scraper Works

  1. Sitemap discovery — Fetches each supplied chamber's /SiteMap.xml and collects member URLs. A medium chamber publishes 1,000–3,000 entries.
  2. Round-robin seeding — Interleaves URLs across chambers so a small maxItems cap samples from every chamber rather than draining the first one alphabetically.
  3. Detail extraction — Fetches each /list/member/<slug-id> page and pulls structured fields from gz-* CSS classes plus schema.org itemprop microdata.
  4. Cleanup and filter — Strips static "About Us" / "Hours:" headings, normalizes whitespace, applies the optional state filter, tags the record with chamber metadata, and saves it.

Who Uses Chamber of Commerce Member Data?

  • SMB SaaS sales teams — Source named businesses with verified phone, address, and category for outbound campaigns. Chamber members tend to be higher-quality leads than generic yellow-pages — they paid to be there.
  • Local marketing agencies — Build geo-segmented prospect lists for digital ad services, web design, or print campaigns.
  • Community banks and credit unions — Identify SMB account targets within a defined regional footprint.
  • Commercial insurance brokers — Map businesses by category and metro for targeted outreach on liability, property, or workers' comp.
  • Local media sales — Build advertiser pipelines for newspapers, radio stations, and community-focused publications.
  • Market researchers — Quantify the local SMB landscape by category and geography across multiple chambers.

Chamber of Commerce Scraper Pricing

Pay-per-result. You pay $0.10 per run start plus $0.001 per record returned.

  • 100 records: ~$0.20
  • 1,000 records: ~$1.10
  • 10,000 records: ~$10.10
  • Full Lubbock-sized chamber (~2,000): ~$2.10

Run a small test with maxItems: 15 first to confirm the chamber URLs you supplied are GrowthZone / ChamberMaster directories before a larger harvest.


Frequently Asked Questions

How do I scrape a chamber of commerce member directory?

Chamber of Commerce Scraper takes one or more chamber directory URLs, walks each chamber's public sitemap to find every member URL, then fetches each profile and extracts structured fields. You point it at the chamber, set a maxItems cap, and walk away.

Which chambers are supported?

Chamber of Commerce Scraper targets chambers running on the GrowthZone / ChamberMaster SaaS — the dominant platform behind roughly 80% of US local chambers. If a chamber's directory lives at business.<name>.com or web.<name>.com and exposes a /list/member/ URL pattern, it's almost certainly supported. Chambers running custom or alternative platforms (Weblink, MembershipWorks, Craft CMS) are out of scope for this version.

How much does Chamber of Commerce Scraper cost to run?

Chamber of Commerce Scraper costs $0.10 per run plus $0.001 per record. A 2,000-member chamber harvests for roughly $2.10. A targeted 100-record extract runs about 20 cents.

Can I scrape multiple chambers in one run?

Chamber of Commerce Scraper accepts an array of chamber URLs and round-robins requests across them. With maxItems: 50 and three chambers, you get roughly 16–17 records per chamber rather than the first 50 from chamber A.

Why is the email field usually null?

Most chambers gate member emails behind a reCAPTCHA contact form rather than publishing them as plain mailto: links. The scraper returns null when no public email is exposed instead of returning the chamber's own footer email. Phone numbers and websites are public on every profile; treat those as the primary contact channels.

Does Chamber of Commerce Scraper need a proxy?

No. GrowthZone serves plain HTML with no bot detection on member directory pages. The scraper runs at 8 concurrent requests without any proxy.

How fresh is the data?

Chamber of Commerce Scraper pulls live pages on every run. GrowthZone sitemaps are regenerated regularly and individual member pages reflect what each chamber has approved for public listing. Re-run weekly or monthly depending on how much member churn matters to your workflow.

Are owner names or member-since dates included?

No. GrowthZone exposes those fields to chamber admins but does not surface them on public profile pages. Chamber of Commerce Scraper returns what's published — anything the chamber holds back is out of scope here.


Need More Features?

Need support for a different chamber platform, an extra field, or a country other than the US? File an issue or get in touch.

Why Use Chamber of Commerce Scraper?

  • Verified SMB data — Members are paying to be in the directory, which screens out most of the noise that pollutes generic business-listing scrapes.
  • Multi-chamber friendly — Round-robin seeding means small caps sample broadly across every chamber you supply, not just the first one alphabetically.
  • No proxy, no JS — Runs against plain server-rendered HTML at 8 concurrent requests. You configure it once and it does the rest.
  • Predictable output — Same field names across every chamber, because every supported chamber runs on the same SaaS template.