8 min read
Build lead lists with company, headquarters, website and investor count from Crunchbase, G2, Capterra and Trustpilot.
| Company | HQ | Investors | Website |
|---|---|---|---|
| Stripe | South San Francisco, CA | 75 | stripe.com |
| Anthropic | San Francisco, CA | 147 | anthropic.com |
| Databricks | San Francisco, CA | 104 | databricks.com |
| Figma | San Francisco, CA | 50 | figma.com |
| Canva | Surry Hills, Australia | 55 | canva.com |
| Ramp | New York, NY | 85 | ramp.com |
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.
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
One call returns a Crunchbase company profile as JSON. If the page doesn't show a required field, you get "extracted": false back instead of a guess.
curl https://request.usestring.ai/v1/fetch \
-H "Authorization: Bearer $STRING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.crunchbase.com/organization/stripe",
"countryCode": "US",
"jsonSchema": {
"type": "object",
"properties": {
"company": { "type": "string" },
"website": { "type": "string" },
"headquarters": { "type": "string" },
"investor_count": { "type": ["integer", "null"] }
},
"required": ["company", "website", "headquarters"]
}
}'{
"company": "Stripe",
"website": "https://stripe.com",
"headquarters": "South San Francisco, California, United States",
"investor_count": 75
}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:
Name, legal name, description, headquarters, website, founders and investor count from Crunchbase profiles.
Product, seller, category, star rating, review count and listed pricing tiers from G2 and Capterra.
TrustScore, total reviews and reviews in the last 12 months from Trustpilot company pages.
Open roles on careers pages, the type of the last funding round, and new product or pricing pages on the company's own site.
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.
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.
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.
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.
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.
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.
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.
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.
| Company | HQ | Investors | Website |
|---|---|---|---|
| Stripe | South San Francisco, CA | 75 | stripe.com |
| Anthropic | San Francisco, CA | 147 | anthropic.com |
| Databricks | San Francisco, CA | 104 | databricks.com |
| Figma | San Francisco, CA | 50 | figma.com |
| Canva | Surry Hills, Australia | 55 | canva.com |
| Ramp | New York, NY | 85 | ramp.com |
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.
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.
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.
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?
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?
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.
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.
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.
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.