Clutch Agency List — Every Agency & Directory URL avatar

Clutch Agency List — Every Agency & Directory URL

Pricing

from $0.04 / 1,000 index rows

Go to Apify Store
Clutch Agency List — Every Agency & Directory URL

Clutch Agency List — Every Agency & Directory URL

The full map of Clutch before a single agency is scraped: every agency profile URL with its key, or every ranked directory path, straight from the index Clutch publishes. Either list resumes where a run stopped, and both feed the Clutch Scraper directly.

Pricing

from $0.04 / 1,000 index rows

Rating

0.0

(0)

Developer

The Netaji

The Netaji

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

This Actor returns the map of Clutch: every agency profile URL the site publishes, each with the key that identifies it, or every ranked directory path, each ready to be pasted into Clutch Scraper. It is a list of addresses rather than a dataset of ratings, and it is where a whole-market study starts instead of a keyword guess.

Two questions it answers before anything expensive is run. How large is the market on Clutch, in agencies rather than in impressions. And which directories exist at all — including the ones nobody thinks to search for, because a directory is only discoverable from Clutch's navigation if somebody clicks toward it.

Accepted input

listing chooses which of the two lists to walk and defaults to agencies.

ValueWhat comes back
agenciesAgency profile URLs, each row carrying the agency's slug.
directoriesRanked directory pages, each row carrying the directory path.

maxItems caps how many rows the run saves and defaults to 1000; 0 walks to the end of the list. startList defaults to 1 and is a resume point rather than a filter: Clutch publishes its index as numbered lists, a run moves into the next one by itself, and the log prints the list to continue from when the run stops.

{
"listing": "agencies",
"maxItems": 1000,
"startList": 1
}

Response fields

An agency row and a directory row, both real:

{
"listing": "agencies",
"list_index": 1,
"position": 3,
"clutch_url": "https://clutch.co/profile/eyemagine",
"slug": "eyemagine",
"directory": null
}
{
"listing": "directories",
"list_index": 1,
"position": 4,
"clutch_url": "https://clutch.co/se/it-services/msp/stockholm",
"slug": null,
"directory": "se/it-services/msp/stockholm"
}
FieldWhat it says
listingWhich of the two lists the row came from.
clutch_urlThe URL as Clutch publishes it.
slugThe agency's key, on agency rows. Empty on directory rows.
directoryThe directory path with no leading slash, on directory rows. Empty on agency rows.
list_indexWhich numbered list the URL was published in.
positionWhere the URL sits inside that list, counting from 1.

Both key columns exist on every row so that a mixed export stays readable: an agency row carries a slug and an empty directory, a directory row the reverse. list_index and position together are a stable address in a list of hundreds of thousands, and they are what a later run resumes from.

Questions

How many rows are there in each list? Enough that maxItems: 0 is a scheduling decision rather than a checkbox — the agency list runs to six figures. The exact totals are read from Clutch as the run goes rather than quoted from a fixed number here, because a published count measured on one day is not a promise about the next. The log prints how many rows each numbered list held as it is walked.

How does a run know where the index ends? By walking past it. The run asks for the list after the last one, gets nothing back, and stops, logging that the index is finished. That is the only claim about the size of this index that cannot go stale, which is why no hard-coded total is used in its place.

Can the directory paths be fed straight into the Clutch Scraper? Some of them. Most of what Clutch publishes is a deeper, country- or city-scoped variant of a directory — de/it-services/msp/berlin — while Clutch Scraper walks one- and two-segment paths such as it-services or agencies/digital-marketing. A directory-mode run prints how many of its rows are the shallow, walkable shape, so the split is visible before anything is fed anywhere. Deeper paths passed to the Scraper anyway are skipped by name rather than failing that run.

A run stopped at maxItems — how is the next one continued? The log ends with the list to continue from. Passing that as startList on the next run restarts at the beginning of that list, so a small overlap is re-read rather than a gap being left. Rows carry list_index and position, which is enough to drop the overlap after the fact.

Why is this so much cheaper per row than the other Clutch Actor? Because a row here is a URL read from an index Clutch publishes about itself, thousands to a request, while a row from the Scraper is an agency read off a ranked listing page roughly fifty at a time. The work behind the two rows is not comparable, and the pricing follows the work.

Does a row carry the agency's rating or services? No. This Actor returns addresses only — the URL, the key, and where it sits in the index. Ratings, rates, project minimums, headcount and the service mix come from Clutch Scraper.