Dribbble hub

Dribbble Collection API

A collection header and its shots as JSON, with likes, views and rebounds.

GET /v1/dribbble/profiles/{handle}/collections/{collectionId}

1 credit Failed requests are free

About this endpoint

GET /v1/dribbble/profiles/{handle}/collections/{collectionId} returns data.collection with id, slug, path, url, title, curator.handle, curator.name, shotsCount, designersCount and up to 24 shots in collection.shots. Each shot has id, slug, path, url, title, author, likesCount, viewsText, viewsEstimate, viewsApproximate, reboundsCount, thumbnailUrl and isMotion.

The collection id is the id slug form the collections list returns, for example 4582-Data-Viz; the numeric id alone also works. data.page.totalPages is known from shotsCount when that is available. A page past the last one is found with an empty shots array. A hidden or empty tile is dropped, so a page can hold fewer than 24 shots.

Dribbble Collection API FAQ

How do I find the collection id?

Call GET /v1/dribbble/profiles/{handle}/collections and read data.collections[].id and .slug. The collection route accepts the combined form, for example 4582-Data-Viz, or the numeric id on its own.

Why does a page have fewer shots than expected?

A collection can hold a hidden or empty tile, which is left out. The header's shotsCount still describes the collection, so read data.collection.shotsCount rather than counting tiles.

How do I page through a collection?

Send page or the cursor from data.page.nextCursor, and stop when data.page.hasMore is false. A page past the end is found with an empty shots array.

How many credits does a collection page cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth. Each paginated page is a separate billed request.