Clutch Agencies Scraper
Scrape agencies from any public Clutch directory page. Get ratings, reviews, services, city, hourly rates, team size and profile links.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
directoryUrls,maxAgenciesPerDirectory,enableResidentialFallback(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0008 per agency profile = $0.8 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Agency profile | Charged once per agency profile returned. Sample rows and failure diagnostics are never charged. | $0.0008 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-22, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
directoryUrls | Public Clutch directory URLs such as https://clutch.co/ca/web-developers/toronto. Empty input returns one uncharged sample row. | array |
maxAgenciesPerDirectory | Maximum public agency rows to return from each directory URL. The limit keeps compute and optional proxy exposure bounded. | integer |
enableResidentialFallback | After a direct 403 or rate limit, retry at most one directory through a proxy. Metered groups are not offered by this actor. | boolean |
What you get
A structured dataset — each result includes fields like:
namelocationratingreviewCountminimumProjectSizehourlyRateteamSizewebsiteprofileUrldirectoryUrlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
GitHub Scraper
Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.
arXiv Scraper
Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.
OpenAlex Scholarly Works Scraper
Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.
Crossref Scholarly Works Scraper
Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.
Where this tool sits
- Categories
- Developer & Research Tools
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 <city>" rather than a head-office address. |
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
1. Open Clutch Agencies Scraper and click Try for free. 2. Paste your directory pages into Clutch directory URLs, one per line. 3. Set Maximum agencies per directory. Start at 25 to see the shape of the output. 4. Click Start. 5. 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 reviewCount is 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 / hr into 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.