Clutch Agencies Scraper
Pricing
from $0.80 / 1,000 agency profiles
Clutch Agencies Scraper
Scrape agencies from any public Clutch directory page. Each row has the agency name, profile URL, website, city and country. Hourly rate band, smallest project size, team size, rating, review count and service lines come too.
Pricing
from $0.80 / 1,000 agency profiles
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
3
Monthly active users
21 hours ago
Last modified
Categories
Share
Clutch Agencies Scraper: agency leads with rates, team size and reviews
Paste a public Clutch directory URL and the agencies listed on it come back as rows. Name, profile link, website, where they work, hourly rate band, the smallest project they take, team size, star rating, review count and the service lines they advertise.
It reads the first page of each directory URL and stops there. A category with hundreds of agencies gives you that first page, not the whole category, so plan on one URL per page you actually want.
| Input | Public Clutch directory URLs, up to 10 per run |
| Output | One row per agency |
| Ceiling | 100 agencies per directory URL, first page only |
| Account needed | None |
| Price | $0.80 per 1,000 agencies, flat on every plan |
๐ What Clutch Agencies Scraper does
You give it directory pages you copied out of Clutch, like the web developers in Toronto or the SEO firms in Berlin. It reads the cards on that page and turns each one into a row with the numbers buyers actually compare on: the hourly rate band, the minimum project size, how big the team is, the rating and how many reviews sit behind it.
Up to 10 directory URLs per run, up to 100 agencies from each. Anything Clutch does not print on the
card comes back as null rather than a guess, so a missing website is a missing website and not an
empty string you have to second-guess later.
It stays on the directory page. It does not open each agency's profile, so there are no contact details and no review text in the output.
๐ฅ What you give it
{"directoryUrls": ["https://clutch.co/ca/web-developers/toronto"],"maxAgenciesPerDirectory": 25}
| Field | Default | What it is |
|---|---|---|
directoryUrls | empty | Public Clutch directory URLs, copied from the address bar. Up to 10. The input box starts with a Toronto example in it, which is a suggestion and not a default. |
maxAgenciesPerDirectory | 25 | How many agencies to take from each URL. Up to 100. |
enableResidentialFallback | false | Off. When a directory page turns down the first request, this allows one more attempt, once per run, using the network settings below. The field name is historical and switches nothing metered on. |
proxyConfiguration | {"useApifyProxy": true} | Optional, and only used by that one retry. Your own servers are used exactly as given. |
Run it with directoryUrls empty and you get a single labelled sample row back, so you can see the
output shape before committing to a real list.
๐ค What you get back
A real row from a recent run:
{"ok": true,"name": "True Market","profileUrl": "https://clutch.co/profile/true-market","website": null,"rating": 4.9,"reviewCount": 26,"minimumProjectSize": "$5,000+","hourlyRate": "$100 - $149 / hr","teamSize": "10 - 49","location": "Serves Toronto, Canada","services": ["Web Development", "Web Design", "Branding", "Graphic Design", "E-Commerce Development"],"directoryUrl": "https://clutch.co/ca/web-developers/toronto","scrapedAt": "2026-09-06T17:08:53.875Z","transport": "direct_http"}
| Field | What it is |
|---|---|
profileUrl | The agency's Clutch profile, with tracking query strings stripped off. Use it as your dedupe key. |
website | The agency's own site, unwrapped from Clutch's redirect link. null when the card does not show one. |
hourlyRate, minimumProjectSize, teamSize | Kept as the bands Clutch prints, text like $100 - $149 / hr, not parsed into numbers. |
location | Clutch's own wording, which is often "Serves |
services | The service lines on the card, as an array. |
directoryUrl | Which of your URLs this row came from, so you can join the results back to your list. |
transport | An internal note about how the page was read. Nothing you need to act on. |
๐งพ Reading the output
Three kinds of row can land in your dataset.
| Row | How to spot it | Charged |
|---|---|---|
| An agency | ok: true and a name | yes |
| The sample row | _sample: true | no |
| A diagnostic | ok: false and _diagnostic: true | no |
Filter on _sample and _diagnostic being absent. The sample row also carries ok: true, so a
filter on that alone keeps it.
A diagnostic row carries a status telling you what happened to that one URL:
status | What it means |
|---|---|
BAD_INPUT | That URL is not a Clutch directory page. The other URLs still ran. |
NO_RESULTS | The page answered but no agency cards were found on it. The row carries a bodySnippet so you can see what came back instead. |
BLOCKED | Clutch turned the request down. Try again later, or a different directory page. |
RATE_LIMITED | Too many requests too quickly. Give it a few minutes. |
NETWORK | Clutch was unreachable or answered badly. Re-run it. |
One bad URL never stops the others, and a diagnostic row never fails the run.
โถ๏ธ How to run it
- Open Clutch Agencies Scraper and click Try for free.
- Paste your directory pages into Clutch directory URLs, one per line.
- Set Maximum agencies per directory. Start at 25 to see the shape of the output.
- Click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
๐ฐ How much does it cost?
$0.80 per 1,000 agencies. Flat on every Apify plan, no volume tiers.
You pay per agency row. The sample row is not charged, diagnostic rows are not charged, and the same agency appearing twice on a page is dropped before it becomes a row.
๐ก What people use it for
- Building an outreach list of agencies in one city and one service line, with the rate band already attached so you can drop the ones out of budget before you write anything.
- Comparing what the same kind of agency charges in three different cities, by running three directory URLs in one go.
- Shortlisting by evidence rather than by page position: rating is easy to look good on when only
four people reviewed you, and
reviewCountis right there beside it. - Keeping a monthly snapshot of a category so you can see which agencies appeared, moved or vanished.
๐ง What it does not do
- First page only. It does not follow Clutch's pagination, so 100 is a cap on what page one can give you, not a promise of 100 rows.
- Directory cards only. No agency profile pages, which means no contact details, no email, no phone and no review text.
- More than 10 URLs and the rest are dropped, without a warning row. Split a longer list across runs.
- The rate and size fields stay as text bands, because that is how Clutch publishes them. Parsing
$100 - $149 / hrinto numbers is your side. - Some cards carry no location, and those come back
null. Clutch's own layout decides this, not the actor. - No review text, no case studies, no portfolio items.
- Rows are a snapshot. Ratings and review counts move, and
scrapedAtrecords when the page was read.
๐งญ Which lead scraper do you need?
| If you want | Use |
|---|---|
| Agencies from a Clutch directory page | This one |
| People by job title, company or location | LinkedIn Profile Search Scraper |
| Everyone who works at one company | LinkedIn Company Employees Scraper |
| Local businesses with addresses and phone numbers | Yandex Maps Scraper |
| What clients are saying about a place | Google Maps Reviews Scraper |
โ Questions people ask
Do I need a Clutch account? No. Everything here comes off public directory pages.
Can I get the agency's email? Not from this actor. It stays on the directory page, and emails live behind the profile.
Why did I get fewer rows than my maximum? The first page of that directory had fewer cards than you asked for. You are charged for what arrived.
Can I run a whole category? Not in one go. Clutch paginates and this reads page one, so you would need the pages you want as separate URLs if Clutch gives them distinct addresses.
Can I schedule it? Yes, like any Apify actor. profileUrl is stable, so comparing this month's
run against last month's is a straight join.
Is scraping Clutch legal? These are public directory listings. They still describe real businesses and sometimes real people, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.
๐ If something breaks
Open the Issues tab on the actor page. Send the directory URL and the run ID. If you got a
diagnostic row, its status and bodySnippet usually explain it on their own.
