bcorporation APIbcorporation.net ↗
Search and retrieve public profiles of Certified B Corporations including impact scores, certification dates, industry, and headquarters data via 2 endpoints.
What is the bcorporation API?
The bcorporation.net API exposes 2 endpoints for querying the official B Corp directory maintained by B Lab. Use search_companies to find certified companies by name, industry, country, or keyword, and get_company to pull a full profile including B Impact scores across Governance, Workers, Community, and Environment areas, certification dates, operating locations, and company size.
curl -X GET 'https://api.parse.bot/scraper/141970e4-6335-45e3-817f-5e80c18aa6c5/search_companies?page=1&query=coffee&country=United+States&industry=Apparel&per_page=25' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace bcorporation-net-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: B Corp Directory SDK — search, filter, and inspect certified companies."""
from parse_apis.bcorporation_net_api import BCorp, CompanyNotFound
client = BCorp()
# Search for sustainable food companies in the US
for company in client.companies.search(query="coffee", country="United States", limit=5):
print(company.name, "|", company.industry, "|", company.latest_verified_score)
# Drill into a specific company for full details including impact scores
result = client.companies.search(query="Patagonia", limit=1).first()
if result:
detail = result.details()
print(detail.name, "—", detail.hq_province + ",", detail.hq_country)
print("Certified:", detail.certification_date, "| Score:", detail.latest_verified_score)
if detail.impact_area_scores:
print(" Governance:", detail.impact_area_scores.governance)
print(" Community:", detail.impact_area_scores.community)
if detail.previous_scores:
for ps in detail.previous_scores[:2]:
print(f" {ps.year}: {ps.score}")
# Fetch a company directly by slug
try:
co = client.companies.get(slug="patagonia-inc")
print(co.name, "| Website:", co.website, "| Size:", co.size)
except CompanyNotFound as exc:
print(f"Not found: {exc}")
print("exercised: companies.search / details / companies.get")
Full-text search over the B Corp directory. Matches against company name, description, keywords, location, industry, and sector. Optionally filter by headquarters country or industry. Results are ordered by relevance when a query is provided, or newest-first when browsing all companies. Each result includes certification status, date, overall B Impact score, headquarters location, and operating countries.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| query | string | Search keyword(s) matched against company name, description, website keywords, location, industry, and sector. Empty string or omitted returns all companies. |
| country | string | Filter by headquarters country name exactly as listed in the directory (e.g. 'United States', 'United Kingdom', 'Netherlands The'). |
| industry | string | Filter by industry name exactly as listed in the directory (e.g. 'Apparel', 'Food products', 'Software publishing and SaaS platforms'). |
| per_page | integer | Number of results per page (1-250). |
{
"type": "object",
"fields": {
"page": "integer — current page number",
"total": "integer — total number of matching companies",
"per_page": "integer — results per page",
"companies": "array of company summary objects"
},
"sample": {
"data": {
"page": 1,
"total": 58,
"per_page": 3,
"companies": [
{
"id": "wonderstate-coffee",
"name": "Wonderstate Coffee",
"size": "50-249",
"slug": "wonderstate-coffee",
"sector": "Agriculture/Growers",
"hq_city": "Viroqua",
"industry": "Agricultural Processing",
"countries": [
"United States"
],
"hq_country": "United States",
"description": "Since 2005, Wonderstate Coffee has been dedicated to roasting exceptional, ethically sourced coffee...",
"hq_province": "Wisconsin",
"company_logo": null,
"demographics": [],
"is_certified": true,
"certification_date": "2025-09-29",
"latest_verified_score": "91.5"
}
]
},
"status": "success"
}
}About the bcorporation API
Endpoints
The API provides two endpoints covering the full public B Corp directory. search_companies accepts free-text query strings matched against company name, description, website keywords, location, industry, and sector. Results can be narrowed with country (e.g. 'United States', 'United Kingdom') and industry (e.g. 'Apparel', 'Software publishing') filters. Pagination is controlled via page and per_page (1–250 results per page). The response includes a total count and an array of company summary objects — useful for building filtered lists or running bulk exports of certified companies.
Company Profiles
get_company takes a slug (returned in search results, e.g. 'patagonia-inc') and returns the full directory profile. Response fields include name, size (employee count range), sector, industry, hq_city, website, cities, and countries representing all operating locations. Critically, it returns the overall B Impact Score and per-area scores for Governance, Workers, Community, and Environment — the core certification data that B Lab publishes for each company.
Data Scope and Freshness
Coverage is limited to companies that hold active or historical certification through B Lab's assessment process. The directory reflects the public-facing profile data as B Lab maintains it, including certification status and dates. Companies with no listed website return null for the website field. Industry and country filter values must match the directory's exact taxonomy — check values returned in search results before constructing filter queries.
The bcorporation API is a managed, monitored endpoint for bcorporation.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bcorporation.net changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official bcorporation.net API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a filterable map of Certified B Corps by country and industry using
countries,hq_city, andindustryfields - Track B Impact Score distributions across sectors by bulk-fetching profiles with
get_company - Identify newly certified companies by browsing the directory newest-first via
search_companieswith no query - Compare certification dates across competitors in a given industry using the certification fields from
get_company - Enrich a sustainability database with verified B Corp status, sector classification, and employee size range
- Generate a dataset of B Corps operating in specific countries using the
countryfilter andcountriesresponse field
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does B Lab offer an official developer API for the B Corp directory?+
What does `search_companies` return compared to `get_company`?+
search_companies returns summary objects — enough data to identify and list companies (name, slug, sector, industry, location). get_company returns the full profile including B Impact scores per area (Governance, Workers, Community, Environment), certification dates, all operating cities and countries, employee size range, and the company website URL.Do the industry and country filter values accept partial matches?+
industry and country parameters in search_companies require exact strings as listed in the directory (e.g. 'Food products' not 'food'). The safest approach is to run a broad search_companies query first, inspect the returned industry and sector values, then use those exact strings as filters.