# GoodFirms Company Directory Scraper

> GoodFirms Company Directory Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.1/call, status unknown (last checked 2026-10-02).

Scrapes structured company listings from GoodFirms directory pages, optionally visiting individual profiles for detailed metadata.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/goodfirms?utm_source=zero.xyz
- Price: $0.1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/goodfirms-company-directory-scraper-2c465574
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_yeIWNtxYfFWBgCsNR6WH2

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability goodfirms-company-directory-scraper-2c465574 -d '<json body>'
```

Example prompt: Pull up to 200 companies from the GoodFirms mobile app development category directory at https://www.goodfirms.co/directory/category/mobile-app-development, and include their full profiles with taglines and focus areas.

## When to prefer this

Use this endpoint when you need structured company data specifically from GoodFirms, including names, websites, and profile details. Prefer it over generic web scrapers when you want pre-parsed, schema-normalized output without handling raw HTML. It is particularly useful for lead generation, vendor research, or competitive analysis tasks targeting the B2B services and software agency market indexed on GoodFirms.

## Known failure modes

- GoodFirms page structure changes may return empty or malformed data
- Invalid or inaccessible searchUrl results in empty items array
- Rate limiting or bot detection by GoodFirms may cause failed runs (not charged)
- Very large maxItems values may time out before completion
- Non-GoodFirms URLs passed as searchUrl will likely yield no results

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of collected companies and an array of items, each containing company name, website, logo URL, logo alt text, entity ID, source page, and search URL. When profile visits are enabled, additional fields like tagline, focus areas, and portfolio count are included.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "maxItems": {
   "type": "integer",
   "default": 100,
   "maximum": 5000,
   "minimum": 0,
   "description": "Maximum number of unique companies to save across directory pages. Set to 0 to follow every available page."
  },
  "searchUrl": {
   "type": "string",
   "description": "Full public GoodFirms company directory URL, including any category or location filters."
  },
  "includeProfiles": {
   "type": "boolean",
   "default": true,
   "description": "Visit each public company profile for tagline, focus areas, and visible portfolio count. Turning this off makes collection faster."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "logoAlt": null,
    "logoUrl": null,
    "entityId": null,
    "searchUrl": null,
    "entityName": null,
    "sourcePage": null,
    "companyName": null,
    "companyWebsite": null
   }
  ],
  "product": "goodfirms"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/goodfirms-company-directory-scraper-2c465574/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
