Clutch Agency Directory
Pricing
from $0.25 / 1,000 companies
Clutch Agency Directory
Scrape B2B agency and company listings from any Clutch.co directory: name, profile, website, rating, review count, minimum project size, hourly rate, employee count, location and service mix. Filterable, proxy-aware, no API key.
Pricing
from $0.25 / 1,000 companies
Rating
0.0
(0)
Developer
Eli J
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
4
Monthly active users
a day ago
Last modified
Categories
Share
Turn any Clutch.co directory into a clean spreadsheet of B2B agencies and software companies — name, website, rating, review count, budget, hourly rate, headcount, location and service mix. No API key, no browser, no scraping code.
Point it at a category (digital marketing, SEO, web design, software development, IT services, …), narrow it with the same filters Clutch itself offers, and export to JSON, CSV or Excel.
What you get
One flat row per company:
| Field | What it is |
|---|---|
name | Company name as listed |
profileUrl | Its Clutch profile |
website | The company's own site, unwrapped from Clutch's click-tracking redirect |
rating / ratingScale | Clutch's aggregate score, on a 0–5 scale |
reviewCount | Number of Clutch reviews behind that score |
minProjectSize / minProjectSizeUsd | Smallest project taken, as text and as a number |
hourlyRate / hourlyRateMinUsd / hourlyRateMaxUsd | Rate band, as text and as bounds |
employees / employeesMin / employeesMax | Headcount band, as text and as bounds |
location | The location Clutch prints on the listing |
addressCity, addressState, addressCountry, addressPostalCode, addressStreet, phone | The postal address published in the listing's structured data |
services | Service mix, e.g. [{"service": "Search Engine Optimization", "percent": 40}, …] |
listingType / isSponsored | Whether the row is a paid placement or a ranked directory listing |
verificationBadge | Premier Verified, Verified, or empty |
summary | Clutch's review-derived summary of the company |
clutchId, listingPage, sourceUrl, scrapedAt | Provenance: which listing, which page, and when (ISO-8601 UTC) |
Why this Actor
Clutch does not publish an API, and it does not answer ordinary HTTP clients —
the connection completes and the server then returns 403 based on the client's
TLS/HTTP2 fingerprint, so swapping in a browser User-Agent changes nothing.
This Actor is built around that, and around the directory's quirks:
- Browser-grade transport. Sessions are established the way a real browser establishes one, so pages come back instead of refusals.
- Automatic identity rotation. Each proxy identity is retired before the site throttles it, and a refused page rotates onto a fresh Apify Proxy session and retries rather than ending the run.
- De-duplicated results. Rows are keyed on the Clutch company id within each directory walk, so a repeated page can never become a repeated — or repeatedly billed — row. Across different directories you asked for, a company that is listed in both is returned for each, because that is what you requested.
- Sponsored placements are labelled, not hidden. Paid listings sit at the top
of most directories and do not always honour the filters you set. Every row
carries
isSponsored, so you can keep them, drop them, or count them. - Partial failures never kill the run. An unreadable page is reported in the
run's
ERRORSrecord; the rest of the walk still lands. - Failed requests are never written to your dataset, so an error can never appear on your bill as a result row.
- An empty result is an answer. Filters that match nothing finish cleanly with guidance instead of a red run and a stack trace.
Input
Nothing is required. With empty input the Actor scrapes the digital marketing directory and stops at 100 companies.
{"category": "agencies/digital-marketing","location": "United Kingdom","sortBy": "ReviewRating","minReviews": "10","maxItems": 100,"proxyConfiguration": { "useApifyProxy": true }}
| Field | Type | Default | Description |
|---|---|---|---|
category | string | agencies/digital-marketing | The Clutch directory path. Pick from the list or type another, e.g. seo-firms, web-designers, developers, it-services. |
startUrls | array | — | Paste Clutch directory URLs instead. Filters already in the URL are kept and ?page= sets where the walk starts. Overrides category. |
location | string | — | Country, state or city (United Kingdom, New York, Berlin). Resolved through Clutch's own location lookup; an unmatched name warns and continues unfiltered. |
sortBy | string | Sponsorship | Sponsorship (Clutch's default), ClutchRank, ReviewRating, NumberOfReviews, Verification, CompanyName. |
minReviews | string | 0 | Keep companies with at least 1 / 3 / 5 / 10 / 15 / 20 reviews. |
maxBudget | string | 0 | Keep companies taking projects under $5k … $250k. |
hourlyRate | array | all | One or more rate bands, from 0-25 to 300. |
companySize | array | all | One or more headcount bands, Freelancer through 10,000+. |
serviceLines | array | all | Clutch service slugs, e.g. field_pp_sl_seo. Free-form — see below. |
industries | array | all | Clutch industry slugs, e.g. field_pp_if_ecommerce. Free-form — see below. |
verifiedOnly | boolean | false | Keep only Clutch-verified companies. |
maxItems | integer | 100 | Hard cap on result rows. 0 means no limit. |
maxRunSeconds | integer | 900 | Stop requesting new pages after this long. 0 disables. |
maxRetriesPerRequest | integer | 8 | How hard to retry a refused page. |
rotateAfterRequests | integer | 24 | Retire each proxy identity after N requests. 0 disables. |
proxyConfiguration | object | Apify Proxy on | Recommended to leave enabled. |
Finding service and industry slugs
serviceLines and industries take Clutch's own slugs, and each directory
publishes its own list — a slug that exists under digital marketing may not
exist under developers. Rather than ship a fixed dropdown that would block
valid values, these fields are free text. The quickest way to get one: tick the
filter on Clutch in your browser and read it out of the resulting URL, for
example ?related_services=field_pp_sl_seo.
The same escape hatch works for any filter this Actor does not expose as a
field. Filter the directory in your browser, paste the resulting URL into
startUrls, and those parameters are sent as-is.
Output
{"name": "Ignite Visibility","profileUrl": "https://clutch.co/profile/ignite-visibility","website": "https://ignitevisibility.com/?utm_source=clutch.co&utm_medium=referral","rating": 4.8,"ratingScale": "0_to_5","reviewCount": 173,"minProjectSize": "$1,000+","minProjectSizeUsd": 1000,"hourlyRate": "$100 - $149 / hr","hourlyRateMinUsd": 100,"hourlyRateMaxUsd": 149,"employees": "250 - 999","employeesMin": 250,"employeesMax": 999,"location": "San Diego, CA","addressCity": "San Diego","addressState": "CA","addressCountry": "US","addressPostalCode": "92037","addressStreet": "4250 Executive Square Suite #100","phone": "6197521955","services": [{ "service": "Search Engine Optimization", "percent": 40 },{ "service": "Advertising", "percent": 10 }],"listingType": "Sponsor","isSponsored": true,"verificationBadge": "Premier Verified","summary": "Ignite Visibility is a digital marketing agency specializing in …","clutchId": "25800","listingPage": 1,"sourceUrl": "https://clutch.co/agencies/digital-marketing","scrapedAt": "2026-07-26T19:48:12+00:00"}
What you can build with it
- Agency shortlists — pull every vetted agency in a category and budget band, ranked by rating, into a spreadsheet in one run.
- Lead lists — company, website, phone and service mix for outbound.
- Competitive and market research — rate bands, headcount and service mix across a category or a country.
- Partner sourcing — filter by service line and industry focus, then sort by review volume.
- Monitoring — schedule a run and watch ratings, review counts and rankings move over time.
Notes and limits
Things worth knowing before you rely on a column:
- Sponsored rows come first and can ignore your filters. Clutch places paid
listings above the ranked ones; on a location-filtered run a sponsor from
another country can still appear. Filter on
isSponsoredif you only want ranked results, or sort by something other thanSponsorship. locationand theaddress*fields can disagree, on purpose.locationis what Clutch prints on the card and follows your location filter to the matching branch office; theaddress*fields come from the listing's structured data and are the company's registered address. A London listing whose structured address is New York is a multi-office company, not an error. Uselocationfor "where this listing is",address*for "where the company is registered".addressCountryis Clutch's code, not always ISO 3166. The UK's constituent countries come back asSQ(Scotland),WL(Wales) andND(Northern Ireland) rather thanGB. Normalise before joining on it.websiteis only present when Clutch shows a "Visit Website" button, which is not every listing. The URL is the company's own, unwrapped from Clutch's redirect, and keeps the UTM parameters Clutch appends.ratingis Clutch's aggregate on a 0–5 scale (ratingScalesays so on every row) and moves as reviews land.minProjectSizeandhourlyRateare the bands Clutch publishes in USD; where Clutch says Undisclosed, the field is empty rather than guessed.- Per-page counts in the log can be under 50. The final page of a filtered result set is usually partial, and sponsored placements share page one with ranked listings, so a page can legitimately report fewer new companies than it listed.
- Directories are deep. A large category runs to tens of thousands of
listings, which is why
maxItemsdefaults to 100 and a run time budget is on by default. Raise both deliberately. - This Actor collects public business listing information only.
Pricing
Pay per result row, with Apify platform usage included — you are not billed
twice. Tightening the filters or lowering maxItems reduces cost directly, and
pages that fail are never billed as rows.
Integrations
Works with everything on the Apify platform: scheduled runs, webhooks, the REST API, the MCP server, Zapier, Make, n8n, Slack, Google Sheets, Airbyte, and LangChain / LlamaIndex.
Support
Found a bug or need a field that isn't here? Open an issue on the Actor's Issues tab and I'll take a look.