Behance API. Profiles, projects and briefs as JSON.
Public profiles, a profile's latest projects, project records, tag assets and services, and freelance briefs. Nine typed routes with real field names, cursor paging and one credit per lookup.
- Nine routes
- Person and team profiles
- 1 credit per request
- Failed requests aren't charged
Teams running monitoring, research, and enrichment pipelines
Why Social Fetch
Behance data as JSON. You build the product.
Live Behance data in one response shape, with platform changes handled for you.
Behance, plus every other platform
One key and one response envelope for Behance and 56 more platforms.
Pricing you can reason about
One request, one credit. Know how far your balance will go before you run your next batch.
Live data on every request
Fetch public data when you ask for it.
Nothing to maintain
We handle platform changes and breakages.
Built for production jobs
Run concurrent workloads with explicit statuses and request IDs.
Regular jobs. Better rates.
Running lookups every month? Get lower per-credit rates with a monthly plan. For occasional projects, choose pay as you go.
What Behance data can you get?
9 endpoints, one API key. Every response comes back as live JSON in the same envelope.
Profiles
Projects
Tags
Freelance
Browse all 9 Behance endpoints
Profiles
Projects
Tags
Freelance
What teams build with Behance data
Monitoring, enrichment, research and content workflows on Behance data, on the same API as every other platform.
How it works
Your first request in three steps.
Use TypeScript or your automation tool of choice.
Sources
+ 51 more platforms
One request
GET/v1/tiktok/profiles/
x-api-key: sk_live_••••••••
Same JSON shape
{
"data": {
"lookupStatus": "found",
"profile": {
"platform": "tiktok",
"handle": "charlidamelio",
"displayName": "charli d’amelio",
"verified": true
},
"metrics": {
"followers": 160263648
}
}
}Step 1
Create your free account
Get an API key with 100 requests included.
Step 2
Choose an endpoint
Pass a username, URL, keyword, or post ID.
Step 3
Get clean JSON
Use the response immediately or send it into your pipeline.
Works with your stack
Code, automate, or connect your AI.
TypeScript
n8n
- Make
- Apify
- MCP
- AI clients
Pricing
Social data, priced simply.
Start with 100 free credits. Monthly plans give you predictable volume and lower per-request rates.
Starter
18,000credits
$1.61 per 1k · $0.00161 per request
- Top up from $1.61 / 1k if you run out
- Up to 25 monitors
Growth
50,000credits
$1.58 per 1k · $0.00158 per request
- Top up from $1.58 / 1k if you run out
- 5 team seats
- Up to 100 monitors
Scale
150,000credits
$1.50 per 1k · $0.00150 per request
- Top up from $1.50 / 1k if you run out
- 25 team seats
- Up to 250 monitors
- Cancel anytime
- 30-day money-back guarantee
- Price locked while you stay
Need 1M+ credits, invoicing, or volume rates? Talk to us
Trust signals
DevHunt
Product Hunt
Uneed
Customers
Teams building on Social Fetch.
“Our TikTok and Instagram scrapers broke constantly. Social Fetch took us off that rotation — we ship product again.”
“Transcripts at volume from one endpoint. No broken scrapers for our small team to maintain.”
“Live profile data on every request. We never flag accounts from a stale cache.”
“Heavy concurrent load, no rate limits to negotiate. The rare API I haven't wrapped in retries.”
Behance API: common questions
Is there a Behance API for profiles and projects?
Yes. Social Fetch has nine Behance routes under /v1/behance: profile, a profile's latest projects, project, tag, freelance brief, recent projects, freelance briefs, tags, and featured projects. Authenticate with your Social Fetch API key in x-api-key.
How do I pass a profile handle?
Use the handle from the profile URL, for example chrisd3b8 in GET /v1/behance/profiles/chrisd3b8. Handles are case-insensitive. A full URL, a numeric user id or a reserved site path such as about is not a handle; reserved paths are refused as bad input.
Does the projects route work for a team?
Yes. A team handle returns its latest projects as found rows, still capped at 12 with no next page. A missing handle is lookupStatus: not_found with projects: [].
What does a project response include?
On found, data.project carries id, name, url, slug, hasMatureContent, color, covers, owners, sourceFiles (with title, licenseType, sizeBytes and extension), linkedAssets, embedAllowed, isPrivate and isPublished. Views, appreciations, comments, creative fields, features, a linked-asset count and dates are not available on this route; those keys are absent from the record. If the owner disabled embedding, embedAllowed is false and only id and name are readable.
What is in a tag response, and what does an unknown tag return?
data carries the tag record, relatedTags, freelance services, isEmpty and up to 24 projects that have downloadable source files. An unknown tag returns lookupStatus: not_found, tag: null, projects: [], relatedTags: [] and services: []. A tag that exists but has no projects returns found with isEmpty: true. A tag slug can contain a slash, hash, percent or question mark; percent-encode those characters in the path, e.g. ui%2Fux, c%23 or 100%25. A title with spaces uses its hyphenated slug, e.g. graphic-design, not graphic%20design.
How do the recent projects, tags and freelance briefs lists page?
Each list takes limit from 1 to 500 (default 100) and an opaque cursor. The response carries page.hasMore and page.nextCursor; send the next cursor back on the same route. The cursor continues after the last row returned, so a list that changes between requests does not repeat or skip rows. If that row is gone, the cursor is refused and you start again. A cursor from another list is refused before any request is made.
What does a freelance brief include?
A found brief carries title, description, budgetMin, budgetMax, currency, budgetText, categories, company, expiresAt, applicantCount, aiAssisted, aiDisclosure, isClosed, type and url. The list route returns brief ids, URLs and slugs; call the brief route for budget and status. A missing brief is lookupStatus: not_found.
How much does the Behance API cost?
Every Behance route charges 1 credit per completed request, and each page of a paged list is a separate request. Check meta.creditsCharged on every response. New accounts start with 100 free credits. Typed misses are billed; requests that end blocked or unavailable are not.
Does HTTP 200 mean the profile or project exists?
No. HTTP 200 means the request finished. Check data.lookupStatus: not_found means the profile, project, tag or brief does not exist. Persist meta.requestId when you need to debug a miss.
Can I use the Behance routes from agents or MCP?
Yes. Every Behance route is a typed MCP tool and is reachable through Ask (POST /v1/ask) in plain English. Use the typed routes for production jobs.
The Behance API in detailHow the Behance routes work, what they cost, and how they differ from the official API.
Why teams use Social Fetch for Behance
GET /v1/behance/profiles/{username} takes a handle such as chrisd3b8 and returns a person or team profile: identity, location (with countryCode), stats (views, appreciations, followers), occupation, company, website, socialLinks, workExperience, tools, teams, features, fields, milestones, availability, freelance, creatorPro, sections, and projects. Team profiles add members and inviteOnly, and expose their About sections, social and web links, fields and gallery features when present. A missing handle is lookupStatus: not_found with profile: null; a reserved site path is refused as bad input.
GET /v1/behance/profiles/{username}/projects returns a profile's latest projects as a compact list: id, name, url, slug, summary, coverUrl, publishedAt and nameLossy. The list stops at 12 items and exposes no next page, so hasMore is false below the cap and null at it. A name that loses characters in this list is restored from the profile when it has the same project; otherwise nameLossy is true. A team handle returns its latest projects as found rows. Missing handles are not_found. For full project detail use GET /v1/behance/projects/{projectId}: owners, covers, color, sourceFiles with licence and size, embedAllowed, isPrivate and isPublished; views, appreciations, comments, creative fields, features, a linked-asset count and dates are not part of that record. When an owner turns embedding off, only id and name are readable.
GET /v1/behance/tags/{tag} returns the tag record, relatedTags, freelance services and up to 24 projects that carry downloadable source files. An unknown tag is lookupStatus: not_found with tag: null, projects: [], relatedTags: [] and services: []; a tag with a record but no projects is found with isEmpty: true. GET /v1/behance/freelance-briefs/{briefId} returns one brief with its budget range, categories, company, expiry, applicant count and AI-assistance disclosure.
The three paged lists (/tags, /freelance-briefs, /projects/recent) take limit (1 to 500, default 100) and an opaque cursor; each response carries page.hasMore and page.nextCursor. The cursor records the last row returned and continues after it, so a list that changes between requests does not repeat or skip rows. If that row is gone, the cursor is refused and you start again. /projects/featured returns the current featured projects as id, name, url, slug, summary, coverUrl, publishedAt and nameLossy. These routes cover public profile, project, tag, brief and project-list data. Other Behance pages, such as search and hiring listings, are not part of this API.
How to call the Behance API
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 Behance route on a few handles, projects, tags and briefs.2. Call the route that matches the record
Use
/profiles/{username}for a person or team,/profiles/{username}/projectsfor their latest projects,/projects/{projectId}for one project,/tags/{tag}for a tag,/freelance-briefs/{briefId}for one brief, and the list routes for recent projects, tags, briefs and featured work. Sendx-api-keyon every request.3. Branch on lookupStatus, then page
Read
data.lookupStatusbefore you store a row. For the paged lists, keep sendingpage.nextCursorascursorwhilepage.hasMoreis true, and bill frommeta.creditsCharged.
What each Behance route returns
- Person and team profiles with stats, location, availability, links, work history, tools, features and projects.
- A profile's latest projects with summaries and cover images, capped at 12 items with no next page.
- Project records with owners, covers, colour, downloadable source files and the embedding-off case.
- Tag records with related tags, freelance services and their sellers, and up to 24 projects carrying source files.
- Freelance briefs with budget range, categories, company, expiry, applicants and AI disclosure.
- Recent projects, tags and freelance briefs as cursor-paged lists, plus the current featured projects.
How much does the Behance API cost?
Each Behance route charges 1 credit per completed request, and each page of a paged list is its own request. meta.creditsCharged on every response is the billing source of truth. A typed not_found is a completed request; a request that fails is not billed.
Social Fetch vs the official Behance API
These routes return public profile, project, tag and brief records as one JSON shape: typed lookupStatus, stable field names, ISO 8601 dates and cursor paging. You call one host with one Social Fetch key, and images stay as links rather than being downloaded.
Pull your first Behance data.
Run a live Behance request in the playground. 100 free credits, no card, JSON back in seconds.
No credit cardSign up in 30 seconds withGoogleGitHub