# Social Fetch API - Dribbble endpoints # Base URL: https://api.socialfetch.dev # Auth: x-api-key header (sfk_...) # Full catalog: https://www.socialfetch.dev/llms-endpoints.txt | JSON: https://www.socialfetch.dev/llms.json # Docs hub: https://www.socialfetch.dev/docs/api | OpenAPI: https://www.socialfetch.dev/openapi.json 17 documented Dribbble operations. Do not invent paths - only the routes below (and their linked markdown pages) are supported. ## GET /v1/dribbble/profiles/{handle} Get Dribbble profile Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/get.mdx SDK: client.dribbble.getProfile({ handle: "simplebits" }) Parameters: - handle (required, string) - Dribbble profile handle, e.g. `simplebits`. Not case-sensitive. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/profiles/simplebits" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/profiles/{handle}/shots List Dribbble profile shots Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/shots.mdx SDK: client.dribbble.listProfileShots({ handle: "simplebits", page: 1, sort: "recent" }) Parameters: - handle (required, string) - Dribbble profile handle, e.g. `simplebits`. Not case-sensitive. - page (optional, integer) - Page number, 1 to 100; a numeric string is accepted too. Defaults to 1. Cannot be combined with `cursor`. - cursor (optional, string) - Cursor from `page.nextCursor` of the previous response. It only works with the same operation and filters. - sort (optional, string, enum: recent | popular) - `recent` (default; pinned first, then newest) or `popular` (Dribbble's own popularity order). Pagination: send query `cursor` from prior `data.page.nextCursor`; stop when `data.page.hasMore` is false. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/profiles/simplebits/shots?page=1&sort=recent" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/profiles/{handle}/members List Dribbble team members Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/members.mdx SDK: client.dribbble.listProfileMembers({ handle: "dribbble", sort: "trending" }) Parameters: - handle (required, string) - Dribbble profile handle, e.g. `simplebits`. Not case-sensitive. - page (optional, integer) - Page number, 1 to 100; a numeric string is accepted too. Defaults to 1. Cannot be combined with `cursor`. - cursor (optional, string) - Cursor from `page.nextCursor` of the previous response. It only works with the same operation and filters. - sort (optional, string, enum: trending | popular) - `popular` (default, the profile's own order) or `trending` (its trending order). Pagination: send query `cursor` from prior `data.page.nextCursor`; stop when `data.page.hasMore` is false. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/profiles/dribbble/members?sort=trending" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/profiles/{handle}/reviews List Dribbble reviews Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/reviews/get.mdx SDK: client.dribbble.getProfileReviews({ handle: "musemindagency" }) Parameters: - handle (required, string) - Dribbble profile handle, e.g. `simplebits`. Not case-sensitive. - page (optional, integer) - Page number, 1 to 100; a numeric string is accepted too. Defaults to 1. Cannot be combined with `cursor`. - cursor (optional, string) - Cursor from `page.nextCursor` of the previous response. It only works with the same operation and filters. Pagination: send query `cursor` from prior `data.page.nextCursor`; stop when `data.page.hasMore` is false. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/profiles/musemindagency/reviews" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/profiles/{handle}/collections List Dribbble profile collections Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/collections.mdx SDK: client.dribbble.listProfileCollections({ handle: "simplebits" }) Parameters: - handle (required, string) - Dribbble profile handle, e.g. `simplebits`. Not case-sensitive. - page (optional, integer) - Page number, 1 to 100; a numeric string is accepted too. Defaults to 1. Cannot be combined with `cursor`. - cursor (optional, string) - Cursor from `page.nextCursor` of the previous response. It only works with the same operation and filters. Pagination: send query `cursor` from prior `data.page.nextCursor`; stop when `data.page.hasMore` is false. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/profiles/simplebits/collections" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/profiles/{handle}/collections/{collectionId} Get Dribbble collection Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/collections/collectionid/get.mdx SDK: client.dribbble.getCollection({ handle: "simplebits", collectionId: "4582-Data-Viz" }) Parameters: - handle (required, string) - Dribbble profile handle, e.g. `simplebits`. Not case-sensitive. - collectionId (required, string) - Collection id as it appears in Dribbble URLs, e.g. `4582-Data-Viz`. The numeric id alone is also accepted. - page (optional, integer) - Page number, 1 to 100; a numeric string is accepted too. Defaults to 1. Cannot be combined with `cursor`. - cursor (optional, string) - Cursor from `page.nextCursor` of the previous response. It only works with the same operation and filters. Pagination: send query `cursor` from prior `data.page.nextCursor`; stop when `data.page.hasMore` is false. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/profiles/simplebits/collections/4582-Data-Viz" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/profiles/{handle}/services List Dribbble profile services Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/services.mdx SDK: client.dribbble.listProfileServices({ handle: "Tubik" }) Parameters: - handle (required, string) - Dribbble profile handle, e.g. `simplebits`. Not case-sensitive. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/profiles/Tubik/services" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/services/{serviceId} Get Dribbble service Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/services/serviceid/get.mdx SDK: client.dribbble.getService({ serviceId: "165194-High-Converting-Landing-Page-Design" }) Parameters: - serviceId (required, string) - Service id as it appears in Dribbble URLs, e.g. `165194-High-Converting-Landing-Page-Design`. The numeric id alone is also accepted. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/services/165194-High-Converting-Landing-Page-Design" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/services/search Search Dribbble services Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/services/search.mdx SDK: client.dribbble.searchServices({ query: "logo", page: 1 }) Parameters: - query (optional, string) - Search text, e.g. `logo`. Up to 200 characters. - categories (optional, array) - Category labels, comma-separated or repeated: Branding, Web Design, Illustration, App & Product Design, Animation & Motion Graphics, Typography, Print Design. - budgetMin (optional, integer) - Minimum budget in whole US dollars, e.g. `1000`. Must not exceed `budgetMax`. - budgetMax (optional, integer) - Maximum budget in whole US dollars, e.g. `5000`. Must be at least `budgetMin`. - location (optional, string) - Designer location as text, e.g. `New York`. - minimumRating (optional, number) - Minimum rating in whole stars from 0 to 5, e.g. `4`. Any value, including `0`, limits results to entries that have a rating. - duration (optional, string, enum: P3D | P1W | P1M) - Delivery time (`duration`): `P3D` (under 3 days), `P1W` (under a week) or `P1M` (under a month). `3d`, `1w` and `1m` are accepted too. - instantCheckout (optional, boolean) - Set to `1` or `true` to return only services with instant checkout; omit for all services. - proOnly (optional, boolean) - Set to `1` or `true` to return only Pro sellers; omit for all sellers. - agenciesOnly (optional, boolean) - Set to `1` or `true` to return only agencies; omit for all sellers. - respondsQuickly (optional, boolean) - Set to `1` or `true` to return only sellers who respond quickly; omit for all sellers. - page (optional, integer) - Page number, 1 to 42; a numeric string is accepted too. Defaults to 1. Cannot be combined with `cursor`. - cursor (optional, string) - Cursor from `page.nextCursor` of the previous response. It only works with the same operation and filters. Pagination: send query `cursor` from prior `data.page.nextCursor`; stop when `data.page.hasMore` is false. curl "https://api.socialfetch.dev/v1/dribbble/services/search?query=logo&page=1" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/profiles/{handle}/articles List Dribbble profile articles Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/profiles/handle/articles.mdx SDK: client.dribbble.listProfileArticles({ handle: "simplebits" }) Parameters: - handle (required, string) - Dribbble profile handle, e.g. `simplebits`. Not case-sensitive. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/profiles/simplebits/articles" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/stories List Dribbble stories Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/stories.mdx SDK: client.dribbble.listStories({ category: "interviews", page: 1 }) Parameters: - category (optional, string) - Story category slug (`category`), one of community, hang-time, inspiration, interviews, meetups, podcast, process, updates. An unknown slug is not_found. - page (optional, integer) - Page number, 1 to 100; a numeric string is accepted too. Defaults to 1. Cannot be combined with `cursor`. - cursor (optional, string) - Cursor from `page.nextCursor` of the previous response. It only works with the same operation and filters. Pagination: send query `cursor` from prior `data.page.nextCursor`; stop when `data.page.hasMore` is false. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/stories?category=interviews&page=1" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/stories/{slug} Get Dribbble story Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/stories/slug/get.mdx SDK: client.dribbble.getStory({ slug: "2026/10/31/ai-and-robotics-branding" }) Parameters: - slug (required, string) - Story path, e.g. `2026/10/31/ai-and-robotics-branding`, as returned in the stories list. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/stories/2026%2F10%2F31%2Fai-and-robotics-branding" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/designers/search Search Dribbble designers Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/designers/search.mdx SDK: client.dribbble.searchDesigners({ query: "logo", page: 1 }) Parameters: - query (optional, string) - Search text, e.g. `logo`. Up to 200 characters. - category (optional, string) - Directory category slug (`category`), e.g. `brand-designers`. An unknown slug is answered as a keyword search. A category is one page; `page` above 1 and cursors are refused, so use `query` to page. - location (optional, string) - Designer location as text, e.g. `New York`. - minimumRating (optional, number) - Minimum rating in whole stars from 0 to 5, e.g. `4`. Any value, including `0`, limits results to entries that have a rating. - availableForWork (optional, boolean) - Set to `true` or `1` to return only designers marked available for work; `false` or `0` (the default) returns everyone. - proOnly (optional, boolean) - Set to `1` or `true` to return only Pro designers; omit for all designers. - respondsQuickly (optional, boolean) - Set to `1` or `true` to return only designers who respond quickly; omit for all designers. - agenciesOnly (optional, boolean) - Set to `1` or `true` to return only agencies; omit for all designers. - page (optional, integer) - Page number, 1 to 100; a numeric string is accepted too. Defaults to 1. Cannot be combined with `cursor`. Dribbble reshuffles this list on every request, so numbered pages repeat designers; follow `page.nextCursor`. - cursor (optional, string) - Cursor from `page.nextCursor` of the previous response. It only works with the same operation and filters. Pagination: send query `cursor` from prior `data.page.nextCursor`; stop when `data.page.hasMore` is false. curl "https://api.socialfetch.dev/v1/dribbble/designers/search?query=logo&page=1" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/jobs/search Search Dribbble jobs Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/jobs/search.mdx SDK: client.dribbble.searchJobs({ query: "designer", page: 1 }) Parameters: - query (optional, string) - Search text, e.g. `designer`. Up to 200 characters. - specialtyIds (optional, array) - Specialty ids, comma-separated (`1,2`) or repeated: 1 Animation, 2 Brand / Graphic Design, 3 Illustration, 4 Leadership, 5 Mobile Design, 6 UI / Visual Design, 7 Product Design, 8 UX Design / Research, 9 Web Design. - location (optional, string) - Job location as text, e.g. `New York`. - anywhere (optional, boolean) - Set to `1` or `true` to return only jobs open to remote candidates; omit for all jobs. - fulltime (optional, boolean) - Set to `1` or `true` to return only full-time jobs; omit for all jobs. - freelanceOrContract (optional, boolean) - Set to `1` or `true` to return only freelance or contract jobs; omit for all jobs. - page (optional, integer) - Page number, 1 to 100; a numeric string is accepted too. Defaults to 1. Cannot be combined with `cursor`. A page past the last is an empty list with `page.hasMore` false. - cursor (optional, string) - Cursor from `page.nextCursor` of the previous response. It only works with the same operation and filters. Pagination: send query `cursor` from prior `data.page.nextCursor`; stop when `data.page.hasMore` is false. curl "https://api.socialfetch.dev/v1/dribbble/jobs/search?query=designer&page=1" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/jobs/{jobId} Get Dribbble job posting Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/jobs/jobid/get.mdx SDK: client.dribbble.getJob({ jobId: "183719-Graphic-Designer" }) Parameters: - jobId (required, string) - Job id as it appears in Dribbble URLs, e.g. `183719-Graphic-Designer`. The numeric id alone is also accepted. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/jobs/183719-Graphic-Designer" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/briefs Search Dribbble project briefs Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/briefs.mdx SDK: client.dribbble.searchBriefs({ categories: "branding", timeline: "few_weeks" }) Parameters: - categories (optional, array) - Categories, comma-separated (`branding,website design`) or repeated: logo design, branding, landing page, website design, mobile app, ui ux design, illustration, animation, icons, social media, presentation, print. - projectScope (optional, string, enum: design_only | dev_required) - Design-only or development-required work: `projectScope=design_only` or `projectScope=dev_required`, e.g. `projectScope=design_only`. - timeline (optional, array) - Timeline values, comma-separated or repeated: `timeline=few_days`, `timeline=few_weeks`, `timeline=month_or_more` or `timeline=unsure`, e.g. `timeline=few_weeks`. - clientType (optional, array) - Client-type values, comma-separated or repeated: `verified`, `promising` or `returning`, e.g. `clientType=verified`. The board does not apply this filter, so all client types are returned. curl "https://api.socialfetch.dev/v1/dribbble/briefs?categories=branding&timeline=few_weeks" \ -H "x-api-key: YOUR_API_KEY" ## GET /v1/dribbble/briefs/{briefId} Get Dribbble project brief Credit cost: 1 credit. Failed requests are free. Auth: API key or x402 payment (no key needed for payment) Docs: https://www.socialfetch.dev/docs/api/v1/dribbble/briefs/briefid/get.mdx SDK: client.dribbble.getBrief({ briefId: "160006" }) Parameters: - briefId (required, string) - Brief id, e.g. `160006`: up to 12 digits, optionally followed by `-` and a slug. Outcome field: `data.lookupStatus` in `found`, `not_found`, `restricted` curl "https://api.socialfetch.dev/v1/dribbble/briefs/160006" \ -H "x-api-key: YOUR_API_KEY"