# Apify Company Data API

> Pull structured B2B company data from Clutch.co with the Clutch.co Agency API Actor (johnvc/clutch-agency-api). Give it company profile URLs or bare slugs and get one flat JSON record per company: name, website, rating, review_count, verification badges, min_project_size, hourly_rate, employees, founded_year, headquarters and every office location, languages, service_lines and focus_areas with percentages, industries, clients, cost_rating, most_common_project_size, pricing_by_service, and published packages. Each profile row can also carry LLM-ready markdown at no extra fetch, and verified client reviews as their own rows. Use when someone wants a company data api, to enrich a CRM with firmographics and service mix, pull B2B service provider records, or turn a list of agency profiles into structured company data as JSON. Billed per profile delivered with no start fee, and MCP-ready for Claude and other AI agents.

- Skill: `johnisanerd/apify-company-data-api` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add johnisanerd/apify-company-data-api`
- Raw SKILL.md: https://api.skillmd.com/api/skills/johnisanerd/apify-company-data-api/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: MIT
- Author: johnisanerd (https://skillmd.com/u/johnisanerd)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/johnisanerd/apify-company-data-api

---


# Clutch Company Data, as Flat JSON Records

Profile URLs or bare slugs in, full B2B company records out: firmographics, service mix, pricing bands, and review ratings, each already parsed into fields you can map onto a CRM.

## When to use this skill

- You need a company data api and found only enterprise firmographic vendors you cannot self-serve.
- You are enriching a CRM or a prospect list with what a buyer actually weighs: verified ratings, published rates, minimum project size, and service mix.
- You have a list of Clutch profiles (or just slugs) and want each one as structured JSON, not a page to read.
- You want the company record and its client reviews from a single run.

Not for: building the list of companies in the first place. To walk a Clutch category or location directory and collect every agency on it, use the companion `apify-marketing-agency-database` skill, built on the same Actor in directory mode. See `references/actor-index.md`.

## What you get

One dataset row per company. `result_type` separates `profile` rows from `review` and `error` rows. The `companies` dataset view shows the profile columns; the `reviews` view shows review rows.

Profile fields:

- `name`, `slug`, `profile_url`, `website` (the real homepage, with tracking parameters stripped)
- `rating`, `review_count`, `is_verified`, `verification` (badge list)
- `min_project_size`, `hourly_rate`, `employees`, `founded_year`
- `headquarters`, `locations` (every office, with a headquarters flag), `languages`, `timezones`
- `service_lines`, `focus_areas`, `industries`, `clients`: each a list of name plus percentage
- `cost_rating`, `most_common_project_size`, `pricing_by_service`, `packages`
- `review_ratings` (quality, schedule, cost, willing_to_refer), `top_mentions`
- `markdown` (Clutch's own LLM-ready rendering, default add-on), `html` (opt-in)
- `fetched_at`

Review rows (when `includeReviews` is on) carry `title`, `rating`, the quality/schedule/cost/willing-to-refer breakdown, `project_services`, `project_size`, `project_length`, `reviewer`, `reviewer_industry`, and Clutch's project and feedback summaries.

## Prerequisites

- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).
- Authentication via `apify login`, or an `APIFY_TOKEN` environment variable (Apify Console, Settings, Integrations).

## The Actor

- Store page: https://apify.com/johnvc/clutch-agency-api?fpr=9n7kx3&fp_sid=skillrepo
- Actor ID: `johnvc/clutch-agency-api`
- Pricing: pay per event, no start fee. See the cost section below and `references/gotchas.md` for the live-price command.

## Run it with the Apify CLI

Three company profiles as JSON plus markdown, reviews off for lean records:

```bash
apify actors call "johnvc/clutch-agency-api" -i '{"mode":"profiles","profileUrls":["ignite-visibility","lounge-lizard","geniusee"],"includeReviews":false,"outputFormats":["json","markdown"],"maxItems":10}' \
  --json \
  --user-agent apify-awesome-skills/apify-company-data-api \
  2>/dev/null
```

One company with its full firmographics and every verified review, capped:

```bash
apify actors call "johnvc/clutch-agency-api" -i '{"mode":"profiles","profileUrls":["https://clutch.co/profile/ignite-visibility"],"includeReviews":true,"maxReviewsPerProfile":50,"maxItems":100}' \
  --json \
  --user-agent apify-awesome-skills/apify-company-data-api \
  2>/dev/null
```

Confirm the live schema and prices before a large batch:

```bash
apify actors info "johnvc/clutch-agency-api" --input --json \
  --user-agent apify-awesome-skills/apify-company-data-api \
  2>/dev/null
```

Read the rows back from a finished run:

```bash
apify datasets get-items <DATASET_ID> --format json \
  --user-agent apify-awesome-skills/apify-company-data-api \
  2>/dev/null
```

Every call carries the three flags this repo expects: `--json` (or `--format json`), `--user-agent apify-awesome-skills/apify-company-data-api`, and `2>/dev/null`.

## Run it from Claude or another AI agent (MCP)

The Actor is MCP-ready. Add the hosted server URL:

`https://mcp.apify.com/?tools=actors,docs,johnvc/clutch-agency-api`

Then ask, for example: "Pull the full company records for ignite-visibility and geniusee from Clutch, with service mix and pricing bands, and give me the websites and hourly rates." MCP setup docs: https://docs.apify.com/platform/integrations/mcp

## Workflow

1. Start with one or two profiles and reviews off. Look at the row shape before you pay for a wide batch.
2. A bare slug works as input. `ignite-visibility` and `https://clutch.co/profile/ignite-visibility` mean the same thing.
3. Keep `outputFormats` at `["json"]` for CRM fields; add `"markdown"` for a RAG pipeline (it costs nothing extra) and `"html"` only when you need the raw page (it costs a second request).
4. Turn `includeReviews` on only when you want the review rows; each review is its own billed row, so `maxReviewsPerProfile` is your cap.
5. Map `name`, `website`, `headquarters`, `employees`, and `min_project_size` straight onto CRM fields. Every row is flat JSON.
6. Check `result_type` before treating a row as a company. An `error` row carries `error_message` and `error_type`.
7. `maxItems` is the hard spend ceiling for the whole run, reviews included.

## Inputs

- `mode` (enum `directory`, `profiles`, `search`): use `profiles` for this workflow.
- `profileUrls` (array): company profile URLs or bare slugs, mixed freely.
- `includeReviews` (boolean, default true): return every verified review as its own row.
- `maxReviewsPerProfile` (integer): cap on reviews per company; reviews paginate until this or the declared total.
- `outputFormats` (array of `json`, `markdown`, `html`, default `["json","markdown"]`): `html` costs a second fetch.
- `maxItems` (integer): the hard delivery ceiling for the run. Use it as a spend cap.

Thin profiles are common: a large share of Clutch companies have no reviews and little published detail, so those rows return what exists rather than guessing.

## Cost

Billing is pay per event with no start fee, so a run that returns nothing costs almost nothing. Confirm live prices with the info command above rather than trusting a number copied here.

The `profile-scraped` event fires once per company record delivered. `review-scraped` fires once per verified review row, only when `includeReviews` is on. There is no charge for the markdown add-on. A company that appears more than once in your input is de-duplicated and billed once.

Suggested confirmation thresholds: mention the estimate under about $5, warn the user over about $5, get explicit confirmation over about $20. Present cost as "around $X", never as a guarantee.

## Honest limits

- Many Clutch profiles are genuinely thin. `has_reviews` is decided by real review entries, not by the boilerplate reviews heading, so a company with no reviews returns a short record honestly.
- Reviews come only from what Clutch publishes; nothing is inferred by a model.
- Public profile data only. No emails scraped from behind a login, no private contact data.
- The website is the company's real homepage with referral tracking parameters removed, so it is safe as a dedupe key.

## Troubleshooting

- Zero rows and no error row: check `result_type`. A `profiles` run with a bad slug returns an `error` row rather than silently dropping it.
- A profile with very few fields: that company's Clutch page is genuinely thin, not a parse failure.
- Duplicates across runs: dedupe downstream on `profile_url` or `slug`, never on `name`.
- Reviews look short: raise `maxReviewsPerProfile`; page one already carries the first block.

See `references/gotchas.md` for cost guardrails and error recovery, and `references/actor-index.md` for the Actor routing table.

## Related Actors

- Clutch.co Agency API (this Actor, directory mode): build the list of agencies first. https://apify.com/johnvc/clutch-agency-api?fpr=9n7kx3&fp_sid=skillrepo
- LinkedIn Company API: firmographics and headcount for a named company. https://apify.com/johnvc/linkedin-company-api?fpr=9n7kx3&fp_sid=skillrepo
- Crunchbase Company API: funding and investor data. https://apify.com/johnvc/crunchbase-company-api?fpr=9n7kx3&fp_sid=skillrepo
- G2 Reviews API: the B2B software counterpart to Clutch. https://apify.com/johnvc/g2-reviews-api?fpr=9n7kx3&fp_sid=skillrepo

