Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Behance Projects Scraper icon

Behance Projects Scraper

Scrape Behance project search. One row per project: title, creator, creative fields, tags, appreciations, views, comments, cover image. No API key.

16 runs on Apify $0.0037 per project ($3.7 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchTerms, maxItems, sortBy (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0037 per project = $3.7 per 1,000

You are charged forWhenPrice
Project scrapedOne Behance project with its appreciations, views and creative fields. Off-topic matches are dropped and never charged.$0.0037

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchTermsWhat to search Behance for, one term per line. Up to 20 terms per run. Each term is searched in turn until the run reaches the row limit below. Behance caps any single search at 1,000 projects, so add more terms rather than asking one term for more.array
maxItemsTotal rows to return across all your terms. The budget is split evenly between them, so four terms and 200 rows gives you 50 of each. Default 100, hard ceiling 5,000. Keep it low while you are trying things out — you pay per row.integer
sortByThe order Behance returns matches in. "Recommended" is its own relevance ranking and is what the site shows by default. "Most appreciated" and "Most viewed" bring the big numbers to the top; "Most recent" sorts by publish date.string
publishedWithinLimit results to work published recently. "All time" searches the whole archive. These four windows are the only ones Behance actually honours.string
creativeFieldNarrow the search to one of Behance's own creative fields, the same list its site filter uses. Leave it blank to search every field. Projects that come back without the field you picked are dropped and never charged.string
proxyUrlsLeave this empty for a normal run. Fill it in only if you want the traffic to leave through proxy servers you already pay for, one URL per line, in the form http://user:pass@host:port.array

What you get

A structured dataset — each result includes fields like:

querytitleurlappreciationsviewscommentscreatorNamecreatorUsernamecreatorUrlcreatorLocationcollaboratorscreativeFieldstagspublishedAt

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Behance Projects Scraper

Search Behance and get the matching projects back as a table: title, link, appreciations, views, comments, the creator, the creative fields it is filed under, its tags and its cover image. No account, no API key, no browser.

  • Up to 20 search terms in one run, one row per project, deduplicated across the terms.
  • Filter by creative field, by how recently the work was published, and sort by appreciations, views, comments or date.
  • Behance search is fuzzy. Projects that come back carrying none of your words are dropped before they are written, and you are not charged for them.
  • Empty input returns a labelled sample row, free, so you can see the shape before spending anything.

Price

$3.70 per 1,000 projects, plus a $0.0006 start fee per run.

This is a flat rate on every plan, free or paid. There are no volume tiers, no minimum spend, no subscription and no add-on fees. What you read here is what you pay on day one and on day four hundred.

ProjectsTotal cost
100$0.3706
500$1.8506
1,000$3.7006
5,000$18.5006

One run returns at most 5,000 projects, and Behance itself stops any single search at 1,000, so the totals above are per run, and a bigger pull means more search terms or more runs.

What is actually charged

  • One project-scraped event per project row written to the dataset. Nothing else is metered per row.
  • Free: the sample row an empty run returns, and every diagnostic row: a blocked target, a dead URL, a search that matched nothing. Those rows all carry "charged": false.
  • Projects Behance returned that carry none of your search words are dropped before they reach the dataset, so an off-topic match never costs you anything.
  • A project matching two of your terms is written once and charged once.
  • A run that finds nothing costs the start fee and nothing more.
  • Rows never leave the dataset without a charge, and are never charged without a row.

Input

{
  "searchTerms": [
    "brand identity",
    "packaging design"
  ],
  "maxItems": 100,
  "sortBy": "appreciations",
  "publishedWithin": "month",
  "creativeField": "Branding"
}
FieldWhat it does
searchTermsWhat to search Behance for, one term per line. Up to 20 per run. The row budget is split evenly between them.
maxItemsTotal rows across all terms. Default 100, ceiling 5,000. Keep it small while you are trying things out.
sortByRecommended, Curated by Behance, Most appreciated, Most viewed, Most commented, or Most recent. These are Behance's own six orderings.
publishedWithinAll time, Today, Past week or Past month. These four windows are the only ones Behance honours.
creativeFieldOptional. One of Behance's 110 creative fields, the same list its site filter offers. Blank searches every field.
proxyUrlsLeave empty. Fill it in only if you want traffic to leave through proxy servers you already pay for, as http://user:pass@host:port.

Run it with empty input and you get one clearly labelled sample row, free, so you can see the output shape before you spend anything.

Output

One row per project. A real row from a real run:

{
  "ok": true,
  "charged": true,
  "recordType": "project",
  "query": "coffee shop branding",
  "title": "COFFEEWORKSCO",
  "url": "https://www.behance.net/gallery/202298481/COFFEEWORKSCO",
  "appreciations": 137,
  "views": 2251,
  "comments": 70,
  "creatorName": "cem kutlu",
  "creatorUsername": "cmkutlu",
  "creatorUrl": "https://www.behance.net/cmkutlu",
  "creatorLocation": "Turkey",
  "collaborators": "Arda Kaya",
  "creativeFields": "Animation, Graphic Design, Illustration",
  "tags": "coffee shop, Coffee, branding, rebranding, brand identity, logo animation, logo, visual identity, Rhino, Logotype",
  "publishedAt": "2024-07-02T11:17:16.000Z",
  "coverImage": "https://mir-s3-cdn-cf.behance.net/projects/max_808/951c5b202298481.Y3JvcCw4MDgsNjMyLDAsMA.png",
  "slug": "COFFEEWORKSCO",
  "projectId": "202298481",
  "scrapedAt": "2026-09-20T09:54:20.229Z"
}

Field notes

  • query: the term that found this project. With several terms you can tell which one hit.
  • appreciations: Behance's like count, read at the moment of the run. It keeps moving.
  • views: the project's view count at read time, same caveat.
  • comments: the comment count at read time. The comments themselves are not returned.
  • creatorName: the display name of the first owner. A project with several owners puts the rest in collaborators.
  • creatorLocation: whatever the creator typed on their own public profile. Sometimes a city and country, sometimes just a country, sometimes nothing.
  • creativeFields: the categories Behance files the project under, comma separated. This is the same list the creativeField input filters on.
  • tags: the creator's own tags, comma separated, in the order they set them. Capitalisation is theirs.
  • publishedAt: when the project was published, as ISO 8601 in UTC.
  • coverImage: a direct link to the project's cover image at up to 808 pixels wide. The image is not downloaded.
  • projectId: Behance's own id. Stable, and safe to use as a primary key when you re-run.

Every real row carries "charged": true. Sample rows carry "_sample": true and diagnostic rows carry "_diagnostic": true with an errorCode you can filter on, and neither is ever billed.

How it works

  • It asks Behance's own search service for exactly the fields that end up in a row, and nothing else. No page rendering, no headless browser, no login.
  • Because it asks for a short list of fields rather than a whole page, one request carries hundreds of projects instead of a couple of dozen.
  • Every project that comes back is checked against the words you typed (in the title, the tags, the creative fields and the creator's name) before it is written or charged.
  • The pager pauses briefly between pages rather than hammering the search.

What people use it for

  • Finding the designers behind the work you like in a category, then looking them up yourself. The row gives you their profile link, not a contact detail.
  • Watching what is doing well in a field right now: sort by appreciations, set "past week", run it on a schedule, and diff on projectId.
  • Building a reference board without saving 200 screenshots. Every row has the cover image link and the tags the creator chose.
  • Checking how a style or a term is actually used on Behance before you name a project that way. The tags column is the creators' own vocabulary, not a taxonomy someone imposed.
  • Teaching and research: a flat, typed table of published work with dates, categories and engagement numbers loads straight into a spreadsheet.

What this does not do

Worth knowing before you spend anything.

  • It does not return contact details. No emails, no phone numbers, no social handles, no availability or rate information. None of that is requested and none of it is written. These are people's portfolios. The row gives you the public project and a link to the public profile, and that is where it stops.
  • It does not open the projects. You get the cover image link and the numbers from the search result, not the images inside the project, not the project description and not the comments.
  • It does not download any images. coverImage is a link. Fetching it is your side.
  • It does not scrape a creator's whole portfolio. The input is a search, not a username.
  • It does not join anything to anything. One row is one project, exactly as Behance published it.

Reading the output

Every run writes three kinds of row, and they are easy to tell apart:

  • Real rows carry "charged": true and "recordType": "project". These are the rows you paid for, one billed event each.
  • The sample row carries "_sample": true and "charged": false. There is exactly one, it only appears when the input had no search terms, and it is there so you can look at the output shape before you spend anything.
  • Diagnostic rows carry "_diagnostic": true, "charged": false and an errorCode you can switch on: NO_RESULTS when a term matched nothing (or matched only off-topic work), NETWORK when Behance could not be reached, RATE_LIMITED when it throttled the run, TIME_BUDGET when the run ran out of time before reaching a term. Each carries a plain-English error and the query it belongs to.

If you only want the data, filter on charged == true. The count of those rows always equals the number of events you were billed for, so the dataset is its own invoice.

Limitations

  • Behance stops any single search at 1,000 projects, however deep you ask. Past that the search simply returns nothing more. If you need a wider net, use several terms rather than one.
  • Search is fuzzy, and it is Behance's, not ours. A two-word term matches projects that hit either word, so "coffee shop branding" returns work tagged only "branding". Rows carrying none of your words are dropped and not charged, but the ones that keep a single word are kept.
  • Appreciations, views and comment counts are a snapshot at read time and will differ from what the page shows a minute later.
  • "Recommended" is Behance's own relevance ranking and its rules are not published. If you want a defensible ordering, sort by appreciations, views, comments or date instead.
  • Only the four publishing windows Behance actually honours are offered: all time, today, past week, past month. There is no arbitrary date range.
  • Private, draft and deleted projects are not visible to anyone logged out, so they are not returned.
  • creatorLocation is free text the creator typed. It is not normalised, not geocoded, and is often blank.
  • The comment count is returned; the comments are not. Neither is the project description or the images inside the project.
  • A project can have several owners. The first is in the creator* fields and the rest are a comma-separated list in collaborators, which is a name list and nothing more.
  • The hard ceiling is 5,000 rows and 20 search terms per run. For more than that, split the work across runs.

Questions

What happens if a term matches nothing?

You get one uncharged diagnostic row for that term with errorCode: "NO_RESULTS", and the run carries on to your other terms. You are never billed for a term that returned nothing. The same happens when Behance returns work that carries none of your words, and the row says how many were dropped.

Why did I get fewer rows than I asked for?

Three reasons, in order of likelihood. Behance stops any one search at 1,000 projects. Off-topic matches are dropped before they are written. And a project matching two of your terms is written once. The run log prints the kept and dropped counts for every term.

Can I scrape one designer's portfolio?

Not with this. The input is a search, not a username. Searching the designer's name will surface their work if their name is in their profile or their tags, but that is a search, not a portfolio export.

Do I need a proxy?

No. The run brings its own egress and the cost of it is already inside the price you see. The proxyUrls field exists only for callers who specifically want traffic to leave through servers they already own.

Will the run fail if something goes wrong?

No. A blocked, empty or broken response produces an uncharged diagnostic row explaining what happened, and the run still finishes as succeeded. A failed run would still bill you the start fee, which would mean paying to be told something went wrong.

Can I run this on a schedule?

Yes. Nothing is held between runs, so the same input is safe to repeat. Use projectId to work out which rows are new since last time.

Does it return anything about the creator beyond their name?

Their display name, their Behance username, the link to their public profile, and whatever location they typed on it. No email, no phone number, no other social account, no rate or availability information. None of that is requested.