NewLaunching String Web Access APIRead the manifesto →

8 min read

How to build lead lists from business directories

Build lead lists with company, headquarters, website and investor count from Crunchbase, G2, Capterra and Trustpilot.

CompanyHQInvestorsWebsite
StripeSouth San Francisco, CA75stripe.com
AnthropicSan Francisco, CA147anthropic.com
DatabricksSan Francisco, CA104databricks.com
FigmaSan Francisco, CA50figma.com
CanvaSurry Hills, Australia55canva.com
RampNew York, NY85ramp.com
The short answer

The String Web Access API is the best way to build lead lists from business directories. It returns any company profile, vendor listing or review page, or just the fields you need as JSON, such as name, website, headquarters and investor count, from Crunchbase, G2, Capterra and Trustpilot. It returned 97% of requests across 100 bot-protected sites in our September 2026 benchmark, the most of 16 providers.

Quickstart

Add the hosted MCP server to Claude, Cursor, ChatGPT or any MCP client. Then give your agent a company profile URL. It calls the web_access_fetch tool and reads the record.

https://mcp.usestring.ai/v1/mcp

Why build lead lists from the web?

A lead list is a set of companies that fit who you sell to, with enough about each one to decide whether and how to reach out. Purchased lists go stale within months, and the directories that would refresh them block scrapers. Building the list from public pages answers the questions sales and growth teams ask first:

  • Which companies fit our target? Industry, headquarters, company type and who backs them tell you whether an account is worth a sequence before anyone writes one.
  • Which accounts are showing buying signals? A new funding round, a listing in your category on G2, a wave of open roles. These change weekly, and they decide timing.
  • Is our CRM still right? Websites move and companies rename. A list rebuilt from the source each month catches what a one-time purchase can't.

What you can collect

Company profiles

Name, legal name, description, headquarters, website, founders and investor count from Crunchbase profiles.

Vendor listings

Product, seller, category, star rating, review count and listed pricing tiers from G2 and Capterra.

Reputation

TrustScore, total reviews and reviews in the last 12 months from Trustpilot company pages.

Buying signals

Open roles on careers pages, the type of the last funding round, and new product or pricing pages on the company's own site.

Why does lead list scraping break?

  • Directories block scrapers. In our September 2026 benchmark, 11 of the 15 other scraping APIs couldn't fetch g2.com on every attempt, and 9 of 15 couldn't fetch crunchbase.com. Browserbase got 0 of 5 on crunchbase.com, g2.com, capterra.com and trustpilot.com. Only String and ScrapingBee returned all four on every attempt. See all 16 providers in the best web scraping APIs.
  • Public pages hide what paid tiers sell. Logged out, Crunchbase shows "obfuscated" where total funding, the last round date and headcount would be. A scraper that asks for those fields anyway gets a guess, and the guess lands in your CRM.
  • A blocked page looks like a company with no website. The page loads with the record missing, and the gap is saved as a lead with nothing to contact.

Why do teams choose String?

  • It works where others fail. String returned 97% of requests across 100 bot-protected sites in our September 2026 benchmark, the most of 16 providers.
  • You pay only for pages that come back. Blocks and errors are free.
  • There's nothing to maintain. No proxies, fingerprints or captcha solvers on your side.
  • Hidden fields stay empty. Mark name and website as required, leave the fields the public page hides out of the schema, and a record that comes back without a website is flagged instead of saved.

How do I build a lead list from business directories?

  1. Define the list by a public attribute

    Start from a page that already groups companies the way you sell: a G2 or Capterra category, a Crunchbase hub or search page, a Trustpilot category. Write the attribute down with the list, so a refresh uses the same definition.

    With String: The search endpoint returns live Google results for a query like "fintech New York site:crunchbase.com", and a sitemap crawl lists every profile URL on a directory's domain.

  2. Fetch each profile page

    Fetch every record with the same settings on every run, so a change in the data means a change on the page.

    With String: Blocked requests are retried, and you don't pay for the ones that fail. Set countryCode when a directory serves a different edition by country.

  3. Read the record from the page's own data

    Crunchbase, G2, Capterra and Trustpilot each put the record in schema.org JSON-LD: a Corporation with its address and website links on Crunchbase, a SoftwareApplication with its aggregate rating on G2 and Capterra, an Organization with its rating on Trustpilot. It's more reliable than the visible page, and it survives redesigns that break CSS selectors.

  4. Ask only for fields the public page shows

    Logged out, Crunchbase hides total funding, round dates and headcount. Leave them out of the schema, or mark them nullable, so extraction can't invent them. Keep name and website required.

  5. Treat a missing website as a failure

    A record with no website was probably a blocked or changed page, not a company with nothing to contact. Flag it and keep the last good record, so the gap never becomes a lead.

  6. Dedupe on the website domain

    The same company appears as Stripe on Crunchbase and as Stripe, LLC in its legal name, and again on G2 and Trustpilot. Match records by the domain of the website, not by name, before anything reaches your CRM.

  7. Refresh on a schedule and push changes

    Monthly suits most lists. Refresh weekly for funding and hiring signals. Write only what changed to HubSpot or Salesforce, so reps see a new signal, not a reimported list.

Get a free sample lead list

Tell us who you sell to and which directories you use. We'll run String on their pages and email you a sample lead list with company, headquarters, website and investor count, free.

Request a free sample lead list
What a lead list looks like
CompanyHQInvestorsWebsite
StripeSouth San Francisco, CA75stripe.com
AnthropicSan Francisco, CA147anthropic.com
DatabricksSan Francisco, CA104databricks.com
FigmaSan Francisco, CA50figma.com
CanvaSurry Hills, Australia55canva.com
RampNew York, NY85ramp.com

Frequently asked questions

What's the best way to build a lead list from the web?

Start from a directory page that already groups companies by the attribute you sell to, fetch each profile, read the record from the page's own JSON-LD, and dedupe on website domain. The hard part is getting the pages at all, because business directories block most scrapers. The String Web Access API returned 97% of requests across 100 bot-protected sites in our September 2026 benchmark, the most of 16 providers, and fetched crunchbase.com, g2.com, capterra.com and trustpilot.com on every attempt. See all 16 in the best web scraping APIs.

Can I scrape Crunchbase without a Pro account?

The public Crunchbase profile shows a company's name, legal name, description, headquarters, website, LinkedIn page, founders, number of investors and the type of its last round. Logged out, it replaces total funding, round dates and headcount with the word "obfuscated". String returns the public page and doesn't log in, so ask only for the public fields and leave the rest nullable.

How much does it cost to build a lead list with String?

Crunchbase, G2, Capterra and Trustpilot all billed at String's premium tier on our fetches, which is $3.00 per 1,000 successful requests on the Starter plan ($20 a month) and $2.00 per 1,000 on Growth ($100 a month). A list of 5,000 company profiles, refreshed once a month, is about $15 in usage on Starter. Structured extraction with jsonSchema adds a per-request fee. The first 5,000 standard requests are free, and failed requests aren't billed. See pricing.

Is it legal to scrape business directories for leads?

Company facts on public pages, like headquarters, website and ratings, are the easier case: they're public and in most cases they aren't personal data. Names, emails and phone numbers of people are personal data, and GDPR and CCPA apply to them whether or not the page is public. Stay on public pages, collect company fields first, keep your request rate reasonable, and check with your counsel. We go through the cases in Is web scraping legal?

Can I scrape LinkedIn for leads?

LinkedIn's terms prohibit scraping, and the hiQ case shows how that plays out: hiQ won the hacking claim and still lost to a breach-of-contract claim. Business directories and company websites give you most of the same company fields without that exposure. We cover the ruling in What is the hiQ vs LinkedIn ruling?

How do I find the company pages to fetch?

Use the directory's own category or search pages, or run String's /search endpoint with a query such as "fintech New York site:crunchbase.com" to get live Google results. A sitemap crawl lists every profile URL on a directory's domain, so you can filter by path before fetching.

How do I get the leads into HubSpot or Salesforce?

String returns JSON, so any workflow tool can write it to a CRM. In n8n or Zapier, add a String fetch step and map its fields to a HubSpot or Salesforce action. Dedupe on website domain before the write.

How do I avoid getting blocked when scraping directories?

Send each request to String instead of the site. Proxy rotation, browser fingerprints, captcha solving and retries happen behind the endpoint, and JavaScript rendering is switched on per request for pages that need it. Requests that still fail aren't billed.

Does String work on the directories I need?

Send us the URLs and we'll run them and show you what comes back before you commit. Ask for a free sample lead list, or test them yourself with your first 5,000 free requests.

Send us the sites you can't get.

We'll show you what comes back.

© 2026 StringEU and UK GDPR Article 27 representative — appointment verified by EuverifyBuilt in New York City 🗽 🍎