How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
https://clutch.co/web-developersin Directory URLs. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
This Clutch scraper turns Clutch.co directory pages and company links into a clean agency list with ratings, rates, team sizes, services and websites, plus client reviews when you need them.
- Agencies from a directory builds a Clutch agency list from listing cards. This is the cheapest mode.
- Full company pages adds phone, address, offices, languages, social links and service charts.
- Reviews, one row each gives one row per client review, with scores, project details and the client's company.
Good for
- You need a Clutch companies list for a niche or a city.
- You compare agencies by rating, rate, size and services.
- You study Clutch agency reviews before you shortlist a vendor.
Who uses it
Agency buyers
Compare agencies by rating, rate, size and services.
Sales and lead teams
Build a list of companies for one niche or city.
Market researchers
Read client reviews before you shortlist a vendor.
Price
Prices will be shown after release.
Questions
Do I need a Clutch account?
No. The tool reads public pages with no login.
Does it return the names of review authors?
No. Reviews show the client's company, industry, size and location. They have no personal names or contacts.
Why do two runs give a different order?
Clutch changes the order of paid placements. The list can differ between runs.
Details
Step by step on Apify
- Keep Agencies from a directory in What to collect.
- Keep
https://clutch.co/web-developersin Directory URLs, or paste your own listing link. - Keep 10 in Maximum rows.
- Click Start. The run takes from a few seconds to about 2 minutes.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Build a list of agencies to contact | directoryUrls in Directory mode | Company | name, website, location, services | CRM import from CSV |
| Shortlist vendors for a project | directoryUrls with minRating and minReviews | Company | rating, reviewsCount, hourlyRate, minProjectSize | Spreadsheet |
| Enrich a list you already have | profileUrls in Company pages mode | Company with details | phone, address, foundedYear, socials | CRM update by companyId |
| Study what clients say about a competitor | profileUrls in Reviews mode | Review | rating, project, text, date, clientIndustry | BI tool or a notes database |
| Watch a niche every month | directoryUrls on an Apify schedule | Company | companyId, rating, reviewsCount, fetchedAt | Compare runs by companyId |
Tips for better results
- Use the directory mode for the cheapest run. It reads listing cards only.
- Use the full company mode when you need phone, address, offices or social links.
- One run saves up to 2000 rows. Split bigger jobs into several runs.
Limits and good to know
maxItems: up to 2000 rows per run. A full test at 2000 company rows took about 55 minutes on an earlier build; the current build was tested at 1000 listing rows and 500 company pages. For more, split the work into several runs- Time: 10 listing rows take from a few seconds to about 2 minutes, the longer time when Clutch blocks the first route or your own proxy does not answer. 100 listing rows took 12 seconds and 1000 listing rows about 12 minutes. 100 company pages with reviews take 5 to 7 minutes, 500 company pages 12 to 16 minutes. The default timeout is 2 hours
- Links: up to 100 directory links, 2000 company links and 20 search words. Links must be on
clutch.co - Reviews: up to 2000 per company. Portfolio: up to 30 works per company
- Site checks open up to 3 pages of the company site, each up to 1 MB. A Clutch page over 8 MB counts as a failed page
- Clutch shows about 50 companies per listing page and changes the order of paid placements, so two runs can differ
- The Actor stops after 8 failed pages in a row, after 2 if Clutch has not answered for two minutes, and after the first page if Clutch never answered. It tells you this in the run message
- With a shared datacenter proxy, more company pages get blocked. Those rows stay
partialwith the listing data and cost the cheaper directory price. Keep the residential default for full results
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"rowType": "company",
"status": "complete",
"companyId": "87062",
"slug": "imaginovation",
"name": "Imaginovation",
"rating": 4.9,
"reviewsCount": 19,
"minProjectSize": "$10,000+",
"hourlyRate": "$50 - $99 / hr",
"employees": "10 - 49",
"location": "Raleigh, NC",
"services": [{ "name": "Web Development", "percent": 25 }],
"website": "https://imaginovation.net/web-app-development/",
"url": "https://clutch.co/profile/imaginovation",
"sponsored": true,
"source": "clutch.co",
"fetchedAt": "2026-11-07T09:35:54.113Z"
}Data fields (40)
| Field | Type | Meaning |
|---|---|---|
rowType | string | What this row is. |
status | string | Result for this row. |
reason | string | Why the row is partial, not found or failed. |
source | string | Always clutch.co. |
url | string | Clutch page of the row. |
fetchedAt | string | When the row was collected. |
inputUrl | string | Status rows: the input this result is about. |
companyId | string | Clutch company ID. |
slug | string | Company part of the Clutch URL. |
name | string | Company name. |
rating | number | Clutch rating, or the rating of one review. |
reviewsCount | integer | Reviews on Clutch. |
minProjectSize | string | Minimum project size. |
hourlyRate | string | Hourly rate range. |
employees | string | Employee range. |
location | string | Main location. |
services | array | Services with their share. |
website | string | Company site, without tracking parameters. |
listingType | string | How Clutch placed the company in the listing. |
sponsored | boolean | True for a paid placement. |
verified | boolean | True when Clutch marks it as verified. |
description | string | Company description. |
directoryUrl | string | Listing the row came from. |
page | integer | Listing page. |
phone | string | Company phone. |
address | string | Main office address. |
foundedYear | integer | Year founded. |
languages | array | Languages served. |
timezones | array | Timezones served. |
locations | array | Offices. |
socials | object | Company social links. |
serviceLines | array | Service chart from the company page. |
focus | object | Focus charts from the company page. |
portfolio | array | Portfolio works. |
reviews | array | Reviews inside a company row. |
reviewInsights | object | Calculated from the collected reviews. |
contactEmail | string | Shared inbox on the company domain. |
paymentProcessors | array | Payment tools seen on the company site. |
siteCheckStatus | string | Result of the company site check. |
reviewId | string | Clutch review ID. |
Input settings (23)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| What to collect | mode | string | "directory" |
| Directory URLs | directoryUrls | array | ["https://clutch.co/web-developers"] |
| Company pages | profileUrls | array | |
| Search words | searchQueries | array | |
| Maximum rows | maxItems | integer | 10 |
| Maximum rows per input | maxItemsPerUrl | integer | |
| Maximum pages per directory | maxPages | integer | |
| Start page | startPage | integer | 1 |
| Include sponsored listings | includeSponsored | boolean | true |
| Minimum rating | minRating | number | |
| Minimum reviews | minReviews | integer | |
| Open each company page | includeProfileDetails | boolean | false |
| Add reviews to each company | includeReviews | boolean | false |
| Maximum reviews per company | maxReviews | integer | 20 |
| Add portfolio | includePortfolio | boolean | false |
| Add review summary | reviewInsights | boolean | false |
| Find a shared company inbox | enrichEmails | boolean | false |
| Detect payment tools | detectPayments | boolean | false |
| Parallel company pages | maxConcurrency | integer | 8 |
| Attempts per page | maxRequestRetries | integer | 3 |
| Proxy | proxyConfiguration | object | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"} |
| Send results to (optional) | deliveryConnector | string | |
| Notion page or channel (optional) | deliveryTarget | string |
