> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/dribbble>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/dribbble.mdx>

---

# Dribbble API. Public design data as JSON.

Read public Dribbble profiles, shot tiles, collections, services, the freelancer directory, jobs and stories. Name the handle, service or keyword and get a typed JSON response.

- Public pages, no login
- Cursor paging
- 1 credit per request

Social Fetch exposes seventeen routes under `/v1/dribbble`. Profile routes take a handle such as `simplebits`; collection routes take the handle and the collection id such as `4582-Data-Viz`; service and job routes take the numeric id with its slug, and the id alone also works. Story routes take the date path that `stories.list` returns, for example `2026/10/31/ai-and-robotics-branding`.

Profiles come from the About tab: identity, contact details, follower and following counts, skills, teams, members, featured stories and the tabs that exist. Shot tiles carry exact `likesCount`, displayed `viewsText` with a parsed `viewsEstimate`, `publishedAt`, `reboundCount` and `hasAttachments`, ordered newest or popular. Collections report `shotsCount` and `designersCount`, and a collection page carries its shots with likes, views and rebounds.

Services, designers and jobs each have a search route that takes Dribbble's own filters and pages with `cursor`. The designer directory reshuffles on every request, so follow `data.page.nextCursor` for a walk without repeats. A service page adds `priceText`, `fromPriceAmount`, `currency`, `duration`, `milestones`, `media` and `tags`. A job page carries `descriptionText`, `employmentType`, `datePosted`, `validThrough` and the hiring company. Project brief routes list the public brief board and return a brief with its budget, timeline, description and client verification details.

Every response uses the `{ data, meta }` envelope with `data.lookupStatus`. A profile, collection, service, job or story that does not exist is a typed `not_found` at HTTP 200, not an error. Shot detail pages, tag pages and Dribbble's own shot search are not part of this API.

## What you can get

- Public profiles with `userId`, `handle`, `followers`, `following`, `skills`, `teams`, `members`, `website`, `email`, `socialLinks` and `tabs`.
- Shot tiles 24 a page with `likesCount`, `viewsText`, `viewsEstimate`, `publishedAt`, `reboundCount` and motion fields.
- Collections six a page, plus collection pages with up to 24 shots and per-shot likes and views.
- Service cards, full service pages with price, milestones and media, and a filtered service search.
- Freelancer directory search with rating, availability, agency and response-time filters, plus category pages such as `brand-designers`.
- Job board search and job pages with the full description and company details.
- Stories with body text, author, category, publication date and view count.

## Dribbble endpoints

| Endpoint | Request | Credits | Docs |
| --- | --- | --- | --- |
| Profile | GET /v1/dribbble/profiles/{handle} | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/get) |
| Profile shots | GET /v1/dribbble/profiles/{handle}/shots | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/shots) |
| Team members | GET /v1/dribbble/profiles/{handle}/members | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/members) |
| Reviews | GET /v1/dribbble/profiles/{handle}/reviews | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/reviews/get) |
| Profile collections | GET /v1/dribbble/profiles/{handle}/collections | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/collections) |
| Collection | GET /v1/dribbble/profiles/{handle}/collections/{collectionId} | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/collections/collectionid/get) |
| Profile services | GET /v1/dribbble/profiles/{handle}/services | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/services) |
| Service | GET /v1/dribbble/services/{serviceId} | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/services/serviceid/get) |
| Search services | GET /v1/dribbble/services/search | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/services/search) |
| Profile articles | GET /v1/dribbble/profiles/{handle}/articles | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/articles) |
| Stories | GET /v1/dribbble/stories | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/stories) |
| Story | GET /v1/dribbble/stories/{slug} | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/stories/slug/get) |
| Search designers | GET /v1/dribbble/designers/search | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/designers/search) |
| Search jobs | GET /v1/dribbble/jobs/search | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/jobs/search) |
| Job | GET /v1/dribbble/jobs/{jobId} | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/jobs/jobid/get) |
| Project briefs | GET /v1/dribbble/briefs | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/briefs) |
| Project brief | GET /v1/dribbble/briefs/{briefId} | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/dribbble/briefs/briefid/get) |

## How to start

1. **Create an API key.** Sign up at Social Fetch and copy a key (`sfk_...`). New accounts get 100 free credits, enough to try every Dribbble route on a few handles.
2. **Call a route.** Send `x-api-key` on every request. Start with `GET /v1/dribbble/profiles/simplebits`, then `GET /v1/dribbble/profiles/simplebits/shots?page=1` and `GET /v1/dribbble/profiles/simplebits/collections?page=1`.
3. **Branch and page.** Check `data.lookupStatus` before storing a row. Keep requesting with `data.page.nextCursor` while `data.page.hasMore` is true, and bill from `meta.creditsCharged`.

## Pricing

Each Dribbble route charges a flat amount per completed request, shown on every endpoint page. Each page of a list is its own request. Credits never expire on pay-as-you-go packs, and `meta.creditsCharged` on every response is the billing source of truth.

## Compared with the official API

Dribbble's official API is built for registered app integrations and needs an app registration. Social Fetch serves the same public data without an app registration or OAuth flow. The trade is coverage: the routes here serve the public profile, collection, service, directory, job and story pages, and do not include shot detail pages, tag pages or Dribbble's shot search.

## FAQ

### Is there a Dribbble API for profiles, shots and collections?

Yes. Social Fetch has seventeen Dribbble routes under /v1/dribbble: profile, profile shots, profile collections, collection, profile services, team members, reviews, articles, service, service search, designer search, job search, job, stories, story, project briefs and project brief. Authenticate with your Social Fetch API key in x-api-key.

### Which Dribbble pages are not covered?

Shot detail pages, tag pages and Dribbble's own shot search are not offered. The routes cover public profile About and Work tabs, collections, services, the freelancer directory, the job board and stories.

### How do I get a profile's shots?

Call GET /v1/dribbble/profiles/{handle}/shots. Set sort to recent (default, pinned first then newest) or popular, and step through pages with cursor or page. A profile with no shots returns a found page with an empty shots array. A page past the end is also a found page with an empty shots array, not an error.

### What does a profile response include?

On found, data.profile carries userId, handle, name, tagline, bio, avatarUrl, bannerUrl, followers, following, likesReceived, tagsCount, location, memberSince, isPro, isSelect, isTeam, availableForWork, skills, languages, expertise, topSpecialties, seeking, teams, members, featuredOn, website, email, socialLinks and tabs. It does not carry a rating. Use the reviews route for the rating and rating count.

### What do the reviews return?

GET /v1/dribbble/profiles/{handle}/reviews returns rating, ratingCount, the latest reviews and data.page. Each review has id, reviewerName, reviewerAvatarUrl, reviewerUserId, text, rating and relativeTime. reviewsComplete is true when the full review list for the page is included. reviews lists only the reviews Dribbble displays; ratingCount can be higher because it also counts ratings from other verified sources.

### How far can I page?

The service search stops at page 42. Profile shots and collections, team members, designer search and stories stop at page 100. A job board page past the last is an empty list with data.page.hasMore false. Read data.page.hasMore and data.page.nextCursor rather than guessing the last page.

### Does HTTP 200 mean the item exists?

No. HTTP 200 means the request finished. Check data.lookupStatus: found means the object is there, not_found means the handle, collection, service, job or story does not exist or was deleted, and restricted means Dribbble requires a login to view it.

### How much does the Dribbble API cost?

Each route charges a flat amount per completed request, shown on each endpoint page. Each page of a list is billed separately. Check meta.creditsCharged on every response. New accounts start with 100 free credits.

### Can I use the Dribbble routes from agents or MCP?

Yes. Every Dribbble route is a typed MCP tool and is reachable through Ask (POST /v1/ask) in plain English. Use the typed routes for production jobs.

### Do I need an app registration or a Dribbble account?

No. The routes work with a Social Fetch API key alone, with no Dribbble login, app registration or OAuth flow.

## Related

- [Dribbble Profile API](https://www.socialfetch.dev/platforms/dribbble/profiles-handle): Identity, counts, skills and contact details from the About tab (`GET /v1/dribbble/profiles/{handle}`).
- [Dribbble Shots API](https://www.socialfetch.dev/platforms/dribbble/profiles-handle-shots): Shot tiles with likes, views and dates, newest or popular (`GET /v1/dribbble/profiles/{handle}/shots`).
- [Dribbble Collection API](https://www.socialfetch.dev/platforms/dribbble/profiles-handle-collections-collectionid): A collection header and its shots (`GET /v1/dribbble/profiles/{handle}/collections/{collectionId}`).
- [Dribbble Services Search API](https://www.socialfetch.dev/platforms/dribbble/services-search): Search service listings by keyword, budget, location and rating (`GET /v1/dribbble/services/search`).
- [Dribbble Designer Search API](https://www.socialfetch.dev/platforms/dribbble/designers-search): Search the freelancer directory by keyword, category page, location and availability (`GET /v1/dribbble/designers/search`).
- [Dribbble Jobs API](https://www.socialfetch.dev/platforms/dribbble/jobs-search): Search the job board and read full job postings (`GET /v1/dribbble/jobs/search`).
- [Ask in plain English](https://www.socialfetch.dev/ask): Route a natural-language Dribbble question to the matching operation.
- [Hosted MCP](https://www.socialfetch.dev/mcp): Call Dribbble tools from Cursor or Claude with the same credit metering as REST.
