All platforms9 Behance endpoints

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.

No credit card requiredRead the API docs
  • Nine routes
  • Person and team profiles
  • 1 credit per request
  • Failed requests aren't charged
99.8% uptime#3 Product of the Day3,200+ developers

Teams running monitoring, research, and enrichment pipelines

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.

Never expires
Use cases

What teams build with Behance data

Monitoring, enrichment, research and content workflows on Behance data, on the same API as every other platform.

What you can build

Find designers

Check profiles, stats, tools and recent projects.

Track new work

Follow recent and featured projects and freelance briefs.

How it works

Your first request in three steps.

Use TypeScript or your automation tool of choice.

Sources

+ 51 more platforms

One request

Social Fetch API

GET/v1/tiktok/profiles/charlidamelio

x-api-key: sk_live_••••••••

1 request · 1 credit

Same JSON shape

response.json200 OK
{
  "data": {
    "lookupStatus": "found",
    "profile": {
      "platform": "tiktok",
      "handle": "charlidamelio",
      "displayName": "charli d’amelio",
      "verified": true
    },
    "metrics": {
      "followers": 160263648
    }
  }
}
  1. Step 1

    Create your free account

    Get an API key with 100 requests included.

  2. Step 2

    Choose an endpoint

    Pass a username, URL, keyword, or post ID.

  3. 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.

Explore integrations

Pricing

Social data, priced simply.

Start with 100 free credits. Monthly plans give you predictable volume and lower per-request rates.

Starter

$29.00

18,000credits

  • Top up from $1.61 / 1k if you run out
  • Up to 25 monitors
Most popular

Growth

$79.00

50,000credits

  • Top up from $1.58 / 1k if you run out
  • 5 team seats
  • Up to 100 monitors

Scale

$225.00

150,000credits

  • 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.”

Daniel Reeve · Founder, Social Crow
  • “Transcripts at volume from one endpoint. No broken scrapers for our small team to maintain.”

    Marcus Lin · Founder, Voice Gecko
  • “Live profile data on every request. We never flag accounts from a stale cache.”

    Hannah Webb · Founder, Scam Finder
  • “Heavy concurrent load, no rate limits to negotiate. The rare API I haven't wrapped in retries.”

    Owen Pritchard · Founder, IP Flare

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. 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. 2. Call the route that matches the record

    Use /profiles/{username} for a person or team, /profiles/{username}/projects for 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. Send x-api-key on every request.

  3. 3. Branch on lookupStatus, then page

    Read data.lookupStatus before you store a row. For the paged lists, keep sending page.nextCursor as cursor while page.hasMore is true, and bill from meta.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