Clutch Scraper: Agency Directory avatar

Clutch Scraper: Agency Directory

Pricing

from $0.25 / 1,000 companies

Go to Apify Store
Clutch Scraper: Agency Directory

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

Eli J

Maintained by Community

Actor stats

0

Bookmarked

25

Total users

8

Monthly active users

10 days ago

Last modified

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 rotateAfterRequests requests, and a refused page moves onto a fresh Apify Proxy session and retries rather than ending the run, up to maxRetriesPerRequest attempts.
  • 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 ERRORS 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. 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

  1. Pick a category, or paste Clutch directory URLs into startUrls.
  2. Optionally narrow the directory with location, sortBy, minReviews, maxBudget, hourlyRate, companySize, serviceLines, industries and verifiedOnly.
  3. Set maxItems and maxRunSeconds, and leave proxyConfiguration enabled.
  4. Start the run, then export the dataset as JSON, CSV or Excel.
  5. Check the run's ERRORS record 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:

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.

FieldTypeDefaultDescription
categorystring"agencies/digital-marketing"The Clutch directory path. Pick from the list or type another, e.g. seo-firms, web-designers, developers, it-services.
startUrlsarray[]Paste Clutch directory URLs instead. Filters already in the URL are kept and ?page= sets where the walk starts. Overrides category.
locationstring""Country, state or city (United Kingdom, New York, Berlin). Resolved through Clutch's own location lookup; an unmatched name warns and continues unfiltered.
sortBystring""Sponsorship (Clutch's default), ClutchRank, ReviewRating, NumberOfReviews, Verification, CompanyName.
minReviewsstring"0"Keep companies with at least 1 / 3 / 5 / 10 / 15 / 20 reviews.
maxBudgetstring"0"Keep companies taking projects under $5k … $250k.
hourlyRatearray[]One or more rate bands, from 0-25 to 300.
companySizearray[]One or more headcount bands, Freelancer through 10,000+.
serviceLinesarray[]Clutch service slugs, e.g. field_pp_sl_seo. Free-form — see below.
industriesarray[]Clutch industry slugs, e.g. field_pp_if_ecommerce. Free-form — see below.
verifiedOnlybooleanfalseKeep only Clutch-verified companies.
maxItemsinteger100Hard cap on result rows. 0 means no limit.
maxRunSecondsinteger900Stop requesting new pages after this long. 0 disables.
maxRetriesPerRequestinteger20How hard to retry a refused page.
rotateAfterRequestsinteger1Retire each proxy identity after N requests. 0 disables.
proxyConfigurationobject{"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:

FieldWhat it is
nameCompany name as listed
profileUrlIts Clutch profile
websiteThe company's own site, unwrapped from Clutch's click-tracking redirect
rating / ratingScaleClutch's aggregate score, on a 0–5 scale
reviewCountNumber of Clutch reviews behind that score
minProjectSize / minProjectSizeUsdSmallest project taken, as text and as a number
hourlyRate / hourlyRateMinUsd / hourlyRateMaxUsdRate band, as text and as bounds
employees / employeesMin / employeesMaxHeadcount band, as text and as bounds
locationThe location Clutch prints on the listing
addressCity, addressState, addressCountry, addressPostalCode, addressStreet, phoneThe postal address published in the listing's structured data
servicesService mix, e.g. [{"service": "Search Engine Optimization", "percent": 40}, …]
listingType / isSponsoredWhether the row is a paid placement or a ranked directory listing
verificationBadgePremier Verified, Verified, or empty
summaryClutch's review-derived summary of the company
clutchId, listingPage, sourceUrl, scrapedAtProvenance: which listing, which page, and when (ISO-8601 UTC)
ActorResearch fitWhat it exports
Kalshi Weather Price HistoryWeather-market price historyHourly or daily candles for named Kalshi weather markets: prices, bids, asks, volume and open interest as exact decimal strings
UFCStats Fight & Round StatsUFC fight statisticsUFCStats fight and round statistics as flat rows with fighter IDs, event dates and locations
Tennis Abstract Data APITennis match statisticsATP and WTA player match histories from Tennis Abstract: scores, opponents, surfaces and available serve and return statistics
Google Trends Data APISearch-interest researchGoogle Trends interest over time, interest by region and related or rising queries, plus the Trending Now board by country
Google Ads Archive: Ads Transparency ExportAd-creative researchAdvertiser 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?

  • maxItems caps result rows; it defaults to 100.
  • The maxRunSeconds run 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 ERRORS record.
  • 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 isSponsored if you only want ranked results, or sort by something other than Sponsorship.
  • location and the address* fields can disagree, on purpose. location is what Clutch prints on the card and follows your location filter to the matching branch office; the address* 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. Use location for "where this listing is", address* for "where the company is registered".
  • addressCountry is Clutch's code, not always ISO 3166. The UK's constituent countries come back as SQ (Scotland), WL (Wales) and ND (Northern Ireland) rather than GB. Normalise before joining on it.
  • website is 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.
  • rating is Clutch's aggregate on a 0–5 scale (ratingScale says so on every row) and moves as reviews land. minProjectSize and hourlyRate are 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 maxItems defaults 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.