Clutch Scraper: Agency Directory
Pricing
from $0.25 / 1,000 companies
Clutch Scraper: Agency Directory
Export B2B agency listings from Clutch.co directories for agency research and lead generation: company names, websites, ratings, review counts, locations, rates, headcounts and service mix. Download JSON, CSV or Excel.
Pricing
from $0.25 / 1,000 companies
Rating
0.0
(0)
Developer
Eli J
Maintained by CommunityActor stats
0
Bookmarked
25
Total users
8
Monthly active users
10 days ago
Last modified
Categories
Share
What Clutch Scraper: Agency Directory does
Use this Clutch scraper to 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 Clutch 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.
Why this Actor
When this Actor was built and tested, Clutch answered plain HTTP clients with
403 even with a browser User-Agent, and served pages to a session presenting
a browser's TLS/HTTP2 fingerprint.
This Actor is built around that, and around the directory's quirks:
- Browser-grade transport. Each session presents a browser's TLS/HTTP2 fingerprint and is warmed with a first request to the Clutch site.
- Automatic identity rotation. With Apify Proxy on, each proxy identity is
retired after
rotateAfterRequestsrequests, and a refused page moves onto a fresh Apify Proxy session and retries rather than ending the run, up tomaxRetriesPerRequestattempts. - 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. Clutch places paid listings
above the ranked ones, and they can ignore the filters you set. Every row
carries
isSponsored, so you can keep them, drop them, or count them. - One unreadable page does not stop the other directories. A page that still
cannot be read after its retries is written to the run's
ERRORSrecord and that directory's walk stops at that page; the other directories you asked for still land. A failed location lookup is logged, the walk continues unfiltered, and it is not written toERRORS. If every page request fails and no row is written, the run ends as failed. - 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.
How to export Clutch agency listings
- Pick a
category, or paste Clutch directory URLs intostartUrls. - Optionally narrow the directory with
location,sortBy,minReviews,maxBudget,hourlyRate,companySize,serviceLines,industriesandverifiedOnly. - Set
maxItemsandmaxRunSeconds, and leaveproxyConfigurationenabled. - Start the run, then export the dataset as JSON, CSV or Excel.
- Check the run's
ERRORSrecord for pages that could not be read, and the log for location lookup warnings.
You can also start from a published task. Each one runs the saved input shown for it under Input:
- Find UK digital marketing agencies with 10 or more reviews: the digital marketing agencies directory, filtered to the United Kingdom and to companies with at least 10 reviews.
- Export digital marketing agencies from Clutch: digital marketing agency listings from Clutch without a country filter.
Pricing
How much does it cost to export Clutch agency listings?
This Actor charges two events. Company is one agency listing written to the dataset. Actor Start is charged when the Actor starts running; the number of events charged depends on the run's Actor memory (one event per GB, minimum one event). The unit prices you pay depend on your subscription plan; see the rates on the current Pricing tab.
Result rows and an automatic, memory-scaled Actor Start event are charged
separately. The run's own compute and its result writes are covered by the
event prices, so you are not billed twice for compute. Storage retention and
reads of the dataset after the run are billed according to your plan.
A nonzero maxItems caps how many result rows a run writes, and so how many are
charged. Filters change the result charge only through the rows they return,
sponsored rows can ignore filters, and the Actor Start event is charged either
way. There is
no result charge without result rows; pages that fail are never billed as rows.
The automatic Actor Start fee still applies; an empty or failed run is not
promised to be free.
minProjectSize, hourlyRate and their USD bound fields are Clutch's published
data about each company, not charges.
Input
Nothing is required. With empty input the Actor scrapes the digital marketing directory and stops at 100 companies.
| 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 (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 | [] | One or more rate bands, from 0-25 to 300. |
companySize | array | [] | One or more headcount bands, Freelancer through 10,000+. |
serviceLines | array | [] | Clutch service slugs, e.g. field_pp_sl_seo. Free-form — see below. |
industries | array | [] | 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 | 20 | How hard to retry a refused page. |
rotateAfterRequests | integer | 1 | Retire each proxy identity after N requests. 0 disables. |
proxyConfiguration | object | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} | Recommended to leave enabled. |
Saved inputs of the published tasks
Each block below is a published task's saved input, exactly as stored.
Find UK digital marketing agencies with 10 or more reviews
{"category": "agencies/digital-marketing","location": "United Kingdom","minReviews": "10","maxItems": 50,"startUrls": [],"sortBy": "","maxBudget": "0","hourlyRate": [],"companySize": [],"serviceLines": [],"industries": [],"verifiedOnly": false,"maxRunSeconds": 900,"maxRetriesPerRequest": 20,"rotateAfterRequests": 1,"proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}}
Export digital marketing agencies from Clutch
{"maxItems": 20,"proxyConfiguration": {"useApifyProxy": true},"category": "agencies/digital-marketing","startUrls": [],"location": "","sortBy": "","minReviews": "0","maxBudget": "0","hourlyRate": [],"companySize": [],"serviceLines": [],"industries": [],"verifiedOnly": false,"maxRunSeconds": 900,"maxRetriesPerRequest": 20,"rotateAfterRequests": 1}
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"}
A page that cannot be read is written to the run's ERRORS key-value record
and that directory's walk stops at that page; the other directories you asked
for still land. A failed location lookup is logged, the walk continues
unfiltered, and it is not written to ERRORS. Failures are never dataset rows.
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) |
Related Actors
| Actor | Research fit | What it exports |
|---|---|---|
| Kalshi Weather Price History | Weather-market price history | Hourly or daily candles for named Kalshi weather markets: prices, bids, asks, volume and open interest as exact decimal strings |
| UFCStats Fight & Round Stats | UFC fight statistics | UFCStats fight and round statistics as flat rows with fighter IDs, event dates and locations |
| Tennis Abstract Data API | Tennis match statistics | ATP and WTA player match histories from Tennis Abstract: scores, opponents, surfaces and available serve and return statistics |
| Google Trends Data API | Search-interest research | Google Trends interest over time, interest by region and related or rising queries, plus the Trending Now board by country |
| Google Ads Archive: Ads Transparency Export | Ad-creative research | Advertiser ad records from Google's Ads Transparency Center: creative format, available images, first and last shown dates and source links |
FAQ and support
How do I find UK digital marketing agencies with 10 or more reviews?
Keep category on the digital marketing directory, set location to
United Kingdom and minReviews to 10. The location is resolved through
Clutch's own location lookup; if the lookup fails or finds no match, the run logs
a warning and continues unfiltered, and that is not written to ERRORS.
Sponsored rows can ignore the filters you set, so filter on isSponsored if you
only want ranked results. location follows your filter to the matching branch
office, while the address* fields are the company's registered address (see
Notes and limits). The
Find UK digital marketing agencies with 10 or more reviews
task runs this search with the saved input shown under Input.
How do I export a Clutch directory to CSV or Excel?
Pick a category, or paste Clutch directory URLs into startUrls; pasted URLs
override category and keep the filters already in the URL. With empty input the
Actor scrapes the digital marketing directory and stops at 100 companies. To go
past that, set maxItems to 0 (no limit) and choose maxRunSeconds
deliberately. When the run ends, export the dataset as JSON, CSV or Excel. The
Export digital marketing agencies from Clutch
task runs the saved input shown under Input.
Can I use it for agency research and lead generation?
Each row carries the fields listed under What you get. website is only present
when Clutch shows a "Visit Website" button, and where Clutch says Undisclosed
for minProjectSize or hourlyRate, the field is empty rather than guessed. This
Actor collects public business listing information only.
Why does the same company appear more than once?
Within one directory walk, rows are keyed on the Clutch company id, so a repeated page never becomes a repeated row. Across different directories you asked for, a company listed in both is returned once for each directory.
Why did I get fewer companies than expected?
maxItemscaps result rows; it defaults to 100.- The
maxRunSecondsrun budget stops requesting new pages once it is reached. - Filters that match nothing finish with guidance in the log instead of rows.
- A page that still cannot be read after its retries ends that directory's walk
at that page and is written to the run's
ERRORSrecord. - If every page request fails and no row is written, the run ends as failed.
- Per-page counts in the log can be under 50; see Notes and limits.
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.
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.