# Behance Scraper (`solidcode/behance-scraper`) Actor

\[💰 $4.00 / 1K] Extract creative projects and creator profiles from Behance — titles, appreciations, views, comments, cover images, tools, fields, and full creator details. Search by keyword or paste project/profile URLs.

- **URL**: https://apify.com/solidcode/behance-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Social media, Other
- **Stats:** 48 total users, 13 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Behance Scraper

Pull creative projects, creator profiles, and project comment threads from Behance (Adobe's portfolio platform) at scale — complete with appreciation counts, view counts, creative-field tags, and the dominant color palette as hex per project. Search by keyword, browse a creative-field gallery, or paste a project or profile URL. Built for creative recruiters, design agencies, and trend researchers who need structured Behance portfolio data without browsing the site project by project.

### Why This Scraper?

- **Three record types in one run** — creative `projects`, creator `profiles`, and project `comment` threads, each emitted as its own clean, filterable row in a single dataset. Keyword and gallery runs spread comments evenly across every project they collect; paste a project URL to pull that one thread in full.
- **14 creative-field galleries** — browse Photography, Graphic Design, Illustration, UI/UX, 3D Art, Motion, Architecture, Product Design, Fashion, Advertising, Fine Arts, Crafts, Game Design, or Sound feeds directly.
- **5 sort orders** — Recommended, Curated, Most Recent, Most Appreciated, and Most Viewed, so you can rank by curation, freshness, or popularity.
- **Engagement metrics on every project** — appreciations and view counts pulled for each work (plus comment count and the full tools list on project rows fetched by URL), ready for popularity and trend analysis.
- **Color palette extracted as hex** — each project carries its dominant color as a `#rrggbb` value for design-trend and palette research.
- **Creator profiles with reach signals** — username, display name, occupation, location, follower count, following count, and total appreciations per creator.
- **Search keyword or paste a URL** — keyword-search projects or creators, or drop in a `behance.net/gallery/...` project link or a `behance.net/username` profile link; the type is detected automatically.
- **Country-level filtering** — narrow projects and creators to any of 44 countries across the Americas, Europe, Asia-Pacific, and MENA.
- **Up to ~10,000 results per query** — paginates smoothly to Behance's own per-search ceiling, with creative-field tags on every project row.

### Use Cases

**Creative Recruitment & Talent Sourcing**

- Build shortlists of illustrators, UI/UX designers, or 3D artists by creative field and country
- Surface high-engagement creators by follower count and total appreciations
- Pull a candidate's full project list, occupation, and location before reaching out

**Design Trend & Market Research**

- Track which styles, tools, and color palettes are trending in a creative field
- Rank projects by appreciations or views to find what resonates this season
- Monitor a creative field's gallery feed over time for emerging aesthetics

**Agency Competitive Analysis**

- Benchmark a competitor's portfolio output, engagement, and featured work
- See which projects earn the most appreciations and comments in your niche
- Audit a studio's published-project count and audience reach

**Lead Generation for Creative Services**

- Find active creators in a target country and creative field
- Capture profile occupation and reach signals to qualify outreach lists
- Enrich a CRM with structured creator data instead of manual profile copying

**Audience & Sentiment Insight**

- Collect a project's full comment thread to gauge community reaction
- Analyze commenter language to understand how work is received
- Pair comment sentiment with appreciation and view counts for a fuller picture

### Getting Started

#### Basic Keyword Search

The simplest run — one topic, 50 projects:

```json
{
    "searchQueries": ["logo design"],
    "maxItems": 50
}
```

#### Sorted & Country-Filtered Search

Find the most-appreciated branding work from creators in Japan:

```json
{
    "searchQueries": ["brand identity"],
    "searchType": "projects",
    "sortBy": "appreciations",
    "country": "JP",
    "maxItems": 100
}
```

#### Browse a Creative-Field Gallery

Pull a full field gallery — leave `searchQueries` empty and pick a field:

```json
{
    "searchQueries": [],
    "creativeField": "photography",
    "maxItems": 0
}
```

#### Profiles, URLs, and Comments

Search for creators, scrape specific links, and collect comment threads:

```json
{
    "searchQueries": ["motion designer"],
    "searchType": "creators",
    "startUrls": [
        "https://www.behance.net/gallery/123456789/My-Project",
        "https://www.behance.net/janedoe"
    ],
    "includeComments": true,
    "maxItems": 200
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | string\[] | `["logo design"]` | Keywords to search on Behance, such as `logo design` or `3d illustration`. Each keyword produces its own set of results. Leave empty if you are only using URLs. |
| `startUrls` | string\[] | `[]` | Paste Behance project (`behance.net/gallery/...`) or creator-profile (`behance.net/username`) URLs directly. The type is detected automatically from the URL. |

#### Search Options

These refine keyword searches only — pasted URLs carry their own context.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchType` | string | `"projects"` | Whether keyword searches return `Creative Projects` or `Creators / Profiles`. |
| `sortBy` | string | `"recommended"` | Result order: Recommended, Curated, Most Recent, Most Appreciated, or Most Viewed. Applies when searching projects. |

#### Browse & Filter

Browse a whole creative field's gallery instead of searching, and narrow results to one country.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `creativeField` | string | `""` (Any field) | Browse one creative field's gallery (Photography, UI/UX, Illustration, and 11 more). A creative field cannot be combined with a search keyword — if both are set, the keyword search runs and the field is ignored. To browse a field, leave `searchQueries` empty. |
| `country` | string | `""` (Any country) | Limit creators and projects to one of 44 countries. Leave as Any country for worldwide results. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxItems` | integer | `50` | Maximum results for the whole run, counted across every keyword, gallery and URL together — two keywords with a limit of 100 return 100 results, not 200. The limit is split evenly between them, and whatever one doesn't use passes to the others. Comments count towards it too. Set to `0` for no limit — Behance returns up to about 10,000 results per search, a platform ceiling we don't impose. |
| `includeComments` | boolean | `false` | Also collect the comments on each project as separate rows. Each comment counts towards `maxItems`, and every project gets an equal share of it — up to 3 comments each, slightly more where a project has none to give — so you get reactions across the whole set rather than one long thread. Paste a project URL under `startUrls` for that project's thread in full. |

### Output

Every row carries a `recordType` field — `project`, `profile`, or `comment` — so you can filter cleanly downstream. Empty fields are omitted from each row.

#### Project (`recordType: "project"`)

> **Note:** `description`, `tools`, and `commentCount` are available only on project rows fetched by a direct project URL (a `behance.net/gallery/...` link in `startUrls`). Behance's keyword-search and creative-field gallery cards don't carry these three fields, so they're omitted from search/gallery rows. Every other field below is present on all project rows.

```json
{
    "recordType": "project",
    "id": 123456789,
    "url": "https://www.behance.net/gallery/123456789/Brand-Identity",
    "name": "Brand Identity — Aurora Coffee",
    "description": "A warm, minimal identity system for a specialty roaster.",
    "coverImage": "https://mir-s3-cdn-cf.behance.net/projects/808/abc123.jpg",
    "createdOn": "2025-03-14T09:22:00+00:00",
    "modifiedOn": "2025-03-16T11:05:00+00:00",
    "appreciations": 1840,
    "views": 27310,
    "commentCount": 64,
    "featured": false,
    "fields": ["Branding", "Graphic Design", "Logo Design"],
    "featuredIn": ["Branding", "Best of Behance"],
    "tools": ["Illustrator", "Photoshop"],
    "colors": ["#c4452a"],
    "ownerId": 555111,
    "ownerUsername": "janedoe",
    "ownerName": "Jane Doe",
    "ownerUrl": "https://www.behance.net/janedoe",
    "searchQuery": "brand identity"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"project"` |
| `id` | number | Behance project ID |
| `url` | string | Canonical project URL |
| `name` | string | Project title |
| `description` | string | Project description. **Project-URL rows only** (not search/gallery cards). |
| `coverImage` | string | Best-available cover image URL |
| `createdOn` | string | Publish date (ISO-8601 UTC) |
| `modifiedOn` | string | Last-modified date (ISO-8601 UTC) |
| `appreciations` | number | Appreciation (like) count |
| `views` | number | View count |
| `commentCount` | number | Number of comments on the project. **Project-URL rows only** (not search/gallery cards). |
| `featured` | boolean | `true` when the project is flagged as Behance premium (paid/gated) content; `false` for standard public projects |
| `fields` | string\[] | The project's creative fields, as shown on the project page (Branding, Graphic Design, Illustration) |
| `featuredIn` | string\[] | Behance galleries the project was featured in, when it was picked up by any. Curation signal, not a creative field. |
| `tools` | string\[] | Tools used, when listed. **Project-URL rows only** (not search/gallery cards). |
| `colors` | string\[] | Dominant color as a `#rrggbb` hex value |
| `ownerId` | number | Creator user ID |
| `ownerUsername` | string | Creator username |
| `ownerName` | string | Creator display name |
| `ownerUrl` | string | Creator profile URL |
| `searchQuery` | string | The keyword, gallery, or URL that produced this row |

#### Profile (`recordType: "profile"`)

> **Note:** `website` is available only on profile rows fetched by a direct profile URL (a `behance.net/username` link in `startUrls`). Creator keyword-search cards don't carry it, so it's omitted from search rows.

```json
{
    "recordType": "profile",
    "id": 555111,
    "username": "janedoe",
    "url": "https://www.behance.net/janedoe",
    "displayName": "Jane Doe",
    "firstName": "Jane",
    "lastName": "Doe",
    "occupation": "Brand & Motion Designer",
    "avatarImage": "https://mir-s3-cdn-cf.behance.net/user/138/jane.jpg",
    "city": "Tokyo",
    "state": "Tokyo",
    "country": "Japan",
    "fields": ["Branding", "Motion"],
    "followers": 12400,
    "following": 310,
    "appreciations": 98200,
    "projectViews": 1450000,
    "website": "https://janedoe.design/",
    "createdOn": "2014-07-01T00:00:00+00:00",
    "searchQuery": "motion designer"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"profile"` |
| `id` | number | Creator user ID |
| `username` | string | Behance username |
| `url` | string | Profile URL |
| `displayName` | string | Display name |
| `firstName` | string | First name, when present |
| `lastName` | string | Last name, when present |
| `occupation` | string | Stated occupation / headline |
| `avatarImage` | string | Avatar image URL |
| `city` | string | City |
| `state` | string | State / region |
| `country` | string | Country |
| `fields` | string\[] | Creative fields the creator works in |
| `followers` | number | Follower count |
| `following` | number | Following count |
| `appreciations` | number | Total appreciations received |
| `projectViews` | number | Total project views |
| `website` | string | Personal website, when public. **Profile-URL rows only** (not creator-search cards). |
| `createdOn` | string | Account creation date (ISO-8601 UTC) |
| `searchQuery` | string | The keyword or URL that produced this row |

#### Comment (`recordType: "comment"`)

Emitted only when `includeComments: true` — one row per comment.

```json
{
    "recordType": "comment",
    "projectId": 123456789,
    "projectUrl": "https://www.behance.net/gallery/123456789/Brand-Identity",
    "commentId": 99887766,
    "text": "The color system here is gorgeous — love the warm palette.",
    "createdOn": "2025-03-15T18:40:00+00:00",
    "authorId": 777222,
    "authorUsername": "marco_v",
    "authorName": "Marco Vidal"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"comment"` |
| `projectId` | number | Parent project ID |
| `projectUrl` | string | Parent project URL |
| `commentId` | number | Unique comment ID |
| `text` | string | Comment body |
| `createdOn` | string | Comment timestamp (ISO-8601 UTC) |
| `authorId` | number | Commenter user ID |
| `authorUsername` | string | Commenter username |
| `authorName` | string | Commenter display name |

### Tips for Best Results

- **Leave `maxItems` at 0 to pull a full creative-field gallery.** With a field set and `searchQueries` empty, a `maxItems` of 0 sweeps the entire gallery feed up to Behance's ~10,000 ceiling.
- **Don't combine a keyword with a creative field.** They're mutually exclusive — if you set both, the keyword wins and the field is ignored. To browse a field, leave `searchQueries` empty.
- **Pick the right sort order.** Use Most Appreciated or Most Viewed to find proven, popular work; use Most Recent to catch what creators just published.
- **Raise `maxItems` when you turn comments on.** Comments are billed as results and share the same limit, and every project gets an equal slice of it — so a run capped at 300 returns about 75 projects with 3 comments each rather than 300 projects. Give it room, or keep `includeComments` off unless you're doing audience analysis. For one project's complete thread, paste its URL under `startUrls` instead.
- **Start small to test, then scale.** Run with `maxItems` of 10–50 first to confirm your filters are right, then raise the cap for the full pull.
- **Batch many keywords in one run.** Several keywords can share one run and one result limit, and anything a second keyword returns that you already have is skipped rather than billed twice.
- **Use the country filter for talent sourcing.** Country filtering is exact for creator searches, making it ideal for building region-specific recruitment shortlists.

### Pricing

**From $4.00 per 1,000 results** — you pay per result, well below the subscription rentals common for Behance data. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.48 | $0.45 | $0.43 | $0.40 |
| 1,000 | $4.80 | $4.50 | $4.25 | $4.00 |
| 10,000 | $48.00 | $45.00 | $42.50 | $40.00 |
| 100,000 | $480.00 | $450.00 | $425.00 | $400.00 |

A "result" is any row in the output dataset — a project, a profile, or a comment. With `includeComments` on, each comment is billed as its own result. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available data from Behance for legitimate research, recruitment, market analysis, and lead-generation purposes. Users are responsible for complying with applicable laws and with Behance's and Adobe's terms of service, including respecting rate limits, intellectual-property rights, and the privacy of any personal data. Do not use extracted data for spam, harassment, or any unlawful purpose.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search on Behance, such as 'logo design' or '3d illustration'. Each keyword produces its own set of results. Leave empty if you are only using URLs below.

## `startUrls` (type: `array`):

Paste Behance project or profile URLs directly, for example a project page (behance.net/gallery/...) or a creator profile (behance.net/username). The type is detected automatically from the URL.

## `searchType` (type: `string`):

Whether keyword searches return creative projects or creator profiles. Only applies to Search Keywords — pasted URLs are detected automatically.

## `sortBy` (type: `string`):

Order for keyword search results. Applies to Creative Projects keyword searches only. Most Appreciated and Most Viewed rank across all time, and results are saved highest-first. This has no effect on creator searches, on pasted Behance URLs, or when you browse a creative field — Behance offers a gallery in its own order only.

## `creativeField` (type: `string`):

Browse one creative field's gallery, for example Photography or UI/UX. Important: a creative field cannot be combined with a search keyword — if you set both, the keyword search runs and the creative field is ignored. To browse a field, leave Search Keywords empty and pick a field here. Leave as 'Any field' to skip field browsing. Gallery browsing always uses Behance's own order, so 'Sort Results By' does not apply to it.

## `country` (type: `string`):

Limit results to creators and projects from one country. Leave as 'Any country' for worldwide results.

## `maxItems` (type: `integer`):

Maximum number of results to save in a single run. This is a total for the whole run, not a fresh allowance for each keyword — two keywords with a limit of 100 give you 100 results, not 200. The limit is shared evenly between your keywords and URLs, so two keywords get about 50 results each, and anything one of them does not use goes to the others. When "Include Project Comments" is on, every comment counts as one result too, so the limit still caps what the run costs. Set to 0 for no limit (Behance returns up to about 10,000 results per search — a platform limit, not one we impose). Tip: start with 10-50 to test, then increase.

## `includeComments` (type: `boolean`):

Also collect the comments on each project. Comments are saved as extra rows and each one counts towards your Max Results limit, so a run with comments on returns fewer projects than the same run without them. Every project gets the same share of that limit — up to 3 comments each, a little more where a project has none to give — so you get comments across the whole set of projects instead of one long thread from the first one. Paste a project URL under "Behance URLs" when you want that single project's comments in full.

## Actor input object example

```json
{
  "searchQueries": [
    "logo design"
  ],
  "startUrls": [],
  "searchType": "projects",
  "sortBy": "recommended",
  "creativeField": "",
  "country": "",
  "maxItems": 50,
  "includeComments": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped Behance projects with key fields.

## `profiles` (type: `string`):

Table of scraped Behance creator profiles.

## `comments` (type: `string`):

Table of scraped project comments (when comments are included).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "logo design"
    ],
    "startUrls": [],
    "searchType": "projects",
    "sortBy": "recommended",
    "creativeField": "",
    "country": "",
    "maxItems": 50,
    "includeComments": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/behance-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["logo design"],
    "startUrls": [],
    "searchType": "projects",
    "sortBy": "recommended",
    "creativeField": "",
    "country": "",
    "maxItems": 50,
    "includeComments": False,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/behance-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "logo design"
  ],
  "startUrls": [],
  "searchType": "projects",
  "sortBy": "recommended",
  "creativeField": "",
  "country": "",
  "maxItems": 50,
  "includeComments": false
}' |
apify call solidcode/behance-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,solidcode/behance-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/abezK76zzniFgTEFK/builds/L23tpbN4ZmLzHnXZx/openapi.json
