Clutch Agencies Scraper — Ratings, Services & Pricing
Pricing
from $4.00 / 1,000 agency scrapeds
Clutch Agencies Scraper — Ratings, Services & Pricing
Scrape public Clutch.co agency directories for B2B leads and vendor research. Get validated agency names, profiles, websites, ratings, review counts, services, locations, pricing, team sizes, verification, sponsorship, and rank. Listing cards only; no full review text. $0.004/agency + usage.
Pricing
from $4.00 / 1,000 agency scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
Clutch Agencies Scraper is an Apify Actor for public Clutch.co agency directory pages. It accepts one or more listing URLs, or a single directory URL, and returns one validated record per agency card with the company name, Clutch profile URL, external website, rating, review count, services, location, pricing, team size, verification state, sponsorship state, result position, source page number, source URL, and scrape timestamp.
The one record in the dataset corresponds to one visible agency listing card from Clutch. That makes the output useful for B2B lead generation, vendor research, procurement shortlisting, and downstream enrichment. The actor is usable through Apify Console, API, schedules, integrations, and Apify MCP.
Best fit and connected workflows
This actor fits workflows that start from a Clutch category, service, or location directory and end with structured agency rows for analysis or follow-up. It is a natural fit when you want to:
- collect agencies from one directory page or several related pages in a single run,
- narrow a shortlist using visible card signals such as rating, reviews, services, or location,
- keep verified agencies in view or route sponsored placements separately,
- pass agency records into enrichment, CRM, procurement, or review-collection workflows,
- capture public agency data for vendor comparison and market research.
For public review text and reviewer details, use Clutch Reviews Scraper after this Actor when the next step needs profile-linked review content. For a related Clutch workflow that uses a different detail contract, see Clutch.co Scraper - Agency Leads, Ratings & Pricing when your next step is focused on that actor's agency-detail output.
Practical scenario
Maya is building a procurement shortlist for a marketing team. She starts with https://clutch.co/agencies/seo and wants agencies in London with at least aa bounded number of rating, at least 10 visible reviews, and a verified badge. She runs the actor with location: "London", minRating: 4.5, minReviews: 10, and verifiedOnly: true.
The returned rows include company_name, website, star_rating, review_count, services, and is_verified. Maya compares the agency cards, opens the Clutch profile URLs for the strongest matches, and passes the websites into her outreach or enrichment workflow.
Input fields
| Field | Type | Purpose |
|---|---|---|
searchUrls | array[string] | One or more public Clutch directory URLs. Takes precedence over categoryUrl. |
categoryUrl | string | A single Clutch directory URL or path such as /it-services. |
location | string | Adds Clutch geolocation server-side for the supplied directory URLs. |
maxResults | integer | Caps the number of validated agencies returned and charged. |
maxPages | integer | Sets a page limit per supplied directory URL. |
minRating | number | Returns agencies with at least this visible star rating. |
minReviews | integer | Returns agencies with at least this visible review count. |
verifiedOnly | boolean | Keeps only cards with a visible verification badge. |
excludeSponsored | boolean | Removes sponsored or featured listing cards from the shortlist. |
serviceKeyword | string | Keeps cards whose visible services contain the keyword. |
locationKeyword | string | Keeps cards whose displayed location contains the keyword. |
maxConcurrency | integer | Controls how many Clutch directory requests run in parallel. |
Example input
{"searchUrls": ["https://clutch.co/web-developers","https://clutch.co/agencies/seo"],"location": "United States","maxResults": 25,"maxPages": 5,"minRating": 4.5,"minReviews": 10,"verifiedOnly": true,"excludeSponsored": true,"serviceKeyword": "mobile app","maxConcurrency": 2}
Output fields
| Field | Type | Meaning |
|---|---|---|
company_name | string | Agency name shown on the listing card. |
profile_url | string | Canonical public Clutch profile URL. |
website | string or null | External agency website resolved from the card. |
tagline | string or null | Short positioning statement shown on the card. |
star_rating | number or null | Visible Clutch rating from 0 to 5. |
review_count | integer or null | Visible Clutch review count. |
min_project_size | string or null | Displayed minimum project budget. |
hourly_rate | string or null | Displayed hourly price band. |
employees | string or null | Displayed team-size band. |
location | string or null | Primary location shown on the card. |
services | array[string] | Deduplicated visible services. |
is_verified | boolean | Whether the card had a visible verification badge. |
is_sponsored | boolean | Whether the card was identified as sponsored or featured. |
result_position | integer | One-based position among validated agencies in the run. |
page_number | integer | One-based source page number. |
source_url | string | Exact Clutch directory page URL collected. |
scraped_at | string | UTC timestamp for extraction. |
Illustrative output record
{"company_name": "Example Agency","profile_url": "https://clutch.co/profile/example-agency","website": "https://example.com/","tagline": "Digital products built for growth.","star_rating": 4.8,"review_count": 42,"min_project_size": "$10,000+","hourly_rate": "$100 - $149 / hr","employees": "50 - 249","location": "New York, NY","services": ["Web Development", "Mobile App Development"],"is_verified": true,"is_sponsored": false,"result_position": 1,"page_number": 1,"source_url": "https://clutch.co/web-developers","scraped_at": "2026-07-15T00:00:00.000Z"}
How it works
The actor reads public Clutch directory pages and extracts listing cards. It supports multiple start URLs, a single-directory input, or the built-in digital-marketing agencies directory when both URL fields are empty.
searchUrls takes precedence over categoryUrl. location applies Clutch geolocation server-side. The remaining filters run against the collected cards. The output stores one validated dataset row per agency card, and the run also writes compact outcome records to OUTPUT and RUN_SUMMARY.
Pricing
This actor uses Pay per event plus Apify platform usage.
- Actor start is charged once per run.
- Each complete, validated agency row written to the default dataset is charged as the primary event.
- Apify platform usage, including compute and proxy usage, is billed separately.
The live Pricing tab on the Apify Actor page shows the current pricing details. For an example, a run that writes fifty agency rows produces fifty row events, one start event, and platform usage charges.
Use with AI agents (MCP)
This actor is usable through Apify MCP. It exposes a focused tool for collecting public Clutch agency listing cards and returning structured rows plus run outcome records.
Tool description: Collect public Clutch directory listing cards, apply the requested filters, and return validated agency rows together with compact run outcome data for downstream agent decisions.
Actor identity: khadinakbar/clutch-listings-scraper
Scrape the public Clutch agency directory at
https://clutch.co/agencies/seowith a maximum of 20 agencies, at least 4.5 stars, at leasta bounded number of reviews, and verified cards only. Return the dataset rows and the run summary so I can compare the agencies and continue with the profile URLs that match our shortlist criteria.
When you use this actor through MCP, read each dataset row as one agency listing card from a source page. profile_url is the canonical Clutch profile link, website is the external agency site when available, and is_verified and is_sponsored come from the card itself. page_number identifies the source page, and result_position shows the one-based order among validated agencies in the run.
Pagination is controlled by maxPages per starting URL, and maxResults caps the total validated agency rows. Because billing is per validated agency row plus platform usage, bounded inputs keep agent-initiated runs predictable.
Run with the Apify API
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/clutch-listings-scraper').call({searchUrls: ['https://clutch.co/web-developers'],maxResults: 10,verifiedOnly: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems({ clean: true });console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("khadinakbar/clutch-listings-scraper").call(run_input={"searchUrls": ["https://clutch.co/it-services"],"maxResults": 10,"excludeSponsored": True,})items = list(client.dataset(run["defaultDatasetId"]).iterate_items())print(items)
Best results and outcome guidance
Start with one directory URL and a small maxResults value when you are checking a new category or geography. Add minRating, minReviews, verifiedOnly, and excludeSponsored when the shortlist needs clearer qualification rules.
Use location for Clutch-side geography and locationKeyword for card text matching. If a directory is deep, raise maxPages before increasing concurrency. For broader coverage across multiple Clutch pages, use searchUrls so each source URL can be tracked independently in the output.
Continue the workflow
- Then use Clutch Reviews Scraper to continue from Clutch Agencies Scraper — Ratings, Services & Pricing discovery into engagement data for the selected records.
- Then use Clutch.co Scraper — Agency Leads, Ratings & Pricing to continue from Clutch Agencies Scraper — Ratings, Services & Pricing discovery into content data for the selected records.
Design note
I found that the dataset contract always includes is_sponsored in the output, even when excludeSponsored is used to filter the input. That keeps the shortlist easy to audit after the run.
FAQ
When should I use searchUrls instead of categoryUrl?
Use searchUrls when you want to scrape several directory pages in one run. Use categoryUrl when you have one Clutch listing page and want a single URL field.
How does this actor fit with Clutch Reviews Scraper?
This actor collects agency listing cards. Clutch Reviews Scraper is the next step when you need review bodies, reviewer details, or other public review content tied to a profile URL.
How do I route sponsored listings in a shortlist workflow?
Keep excludeSponsored off when you want sponsored cards to remain in the displayed order. Set it to true when you want an organic shortlist, while still keeping is_sponsored in the dataset for auditability.
What should I pass to an MCP client?
Pass one or more public Clutch directory URLs, a bounded maxResults, and any filter fields that match the shortlist criteria. Then read the dataset rows plus OUTPUT and RUN_SUMMARY for the run outcome and diagnostics.
Can I combine server-side geography with text filters?
Yes. Use location for Clutch geolocation, then use locationKeyword or serviceKeyword to narrow the collected cards by the text shown on each listing card.
Responsible use
This actor collects public business directory information from Clutch listing cards. Use the data in line with applicable laws, data-protection requirements, and Clutch's terms. Collect only the fields your workflow needs, and review downstream uses before outreach or enrichment.