# Dribbble Jobs Scraper (`parsebird/dribbble-jobs-scraper`) Actor

Scrape design job listings from Dribbble, the #1 job board for graphic design jobs. Filter by specialty, location, remote, full-time, or freelance. Extract job details, descriptions, company info, and apply links.

- **URL**: https://apify.com/parsebird/dribbble-jobs-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** Jobs, Lead generation, Agents
- **Stats:** 34 total users, 6 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 dribbble job details

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### Dribbble Jobs Scraper

Scrape design job listings from [Dribbble](https://dribbble.com/jobs), the #1 job board for graphic design jobs. Filter by specialty, location, remote, full-time, or freelance. Extract job details, descriptions, company info, salary, and apply links.

<table><tr>
<td style="border-left:4px solid #ea4c89;padding:12px 16px;font-weight:600">Discover design hiring trends, benchmark roles, and source candidates across the world's largest design community with 100s of curated design jobs.</td>
</tr></table>

<br>

<table>
<tr>
<td colspan="2" style="padding:10px 14px;background:#ea4c89;border:none;border-radius:4px 4px 0 0">
<span style="color:#fff;font-size:14px;font-weight:700;letter-spacing:0.5px">ParseBird Dribbble</span>
<span style="color:#fce4ec;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Structured data from every listing</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;border-right:none;border-top:none;vertical-align:top;width:50%;background:#fce4ec">
<a href="https://apify.com/parsebird/dribbble-jobs-scraper" style="color:#ad1457;text-decoration:none;font-weight:700;font-size:13px">Jobs</a><br>
<span style="color:#ad1457;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;border-top:none;vertical-align:top;width:50%">
<a href="https://apify.com/parsebird/dribbble-designers-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Designers</a><br>
<span style="color:#78716C;font-size:11px">1,000s of designers with skills, pricing, contact</span>
</td>
</tr>
</table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
parsebird/dribbble-jobs-scraper on Apify. Call: ApifyClient("TOKEN").actor("parsebird/dribbble-jobs-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: keyword (string), specialties (array, "animation"/"brand-graphic-design"/"illustration"/"leadership"/"mobile-design"/"ui-visual-design"/"product-design"/"ux-design-research"/"web-design"), location (string, free text like "New York"), openToRemote (boolean), fullTime (boolean), freelanceOrContract (boolean), maxPages (integer), maxResults (integer). Full actor spec: fetch build via GET https://api.apify.com/v2/acts/parsebird~dribbble-jobs-scraper (Bearer TOKEN). Get token: https://console.apify.com/account/integrations
```

### What does Dribbble Jobs Scraper do?

This Actor scrapes [dribbble.com/jobs](https://dribbble.com/jobs), the official job board by Dribbble — the heart of the design community. Every job is automatically enriched with its detail page. Each record includes:

- **Job details** — title, job type (full-time/freelance/contract), specialty, posted date
- **Compensation** — salary range when available (extracted from JSON-LD)
- **Location** — city, region, country, or remote status
- **Company data** — name, logo, website, description
- **Full description** — complete job description in both plain text and HTML
- **Apply URL** — direct link to apply (email or external career page)
- **Validity** — date posted and valid through dates

### Why scrape Dribbble Jobs?

- **Design hiring trends** — Track which specialties, regions, and job types have the most openings
- **Salary benchmarking** — Compare compensation across design roles and companies
- **Recruiting** — Source designers or find companies hiring for specific creative skills
- **Lead generation** — Identify companies investing in design talent and their hiring volume
- **Job aggregation** — Feed design job data into your own job board, newsletter, or alert system
- **Market research** — Analyze demand for design specialties across industries and locations

### How to use

1. Go to the [Dribbble Jobs Scraper](https://apify.com/parsebird/dribbble-jobs-scraper) page on Apify Store
2. Click **Try for free**
3. Configure your input:
   - **Keyword** — Search by company, skill, or tag
   - **Specialties** — Animation, Brand/Graphic Design, Illustration, UI/Visual, Product Design, UX, Web Design, etc.
   - **Location** — Free-text (e.g. "New York", "London", "Austin")
   - **Open to Remote** — Include remote-friendly positions
   - **Full-Time / Freelance** — Filter by engagement type
4. Click **Start** and wait for the run to finish
5. Download your data in JSON, CSV, Excel, or connect via API

> **Note:** Applying many filters at once (multiple specialties, a specific location, remote + full-time, etc.) narrows the results significantly. If you are not getting enough results, try reducing the number of filters or running separate scrapes per specialty. The location field is free text — Dribbble will match whatever you type, so if no results appear, try a broader location term (e.g. "California" instead of "San Francisco, CA").

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `keyword` | string | `""` | Free-text search (company, skill, tag) |
| `specialties` | array | `[]` | Design specialties: `animation`, `brand-graphic-design`, `illustration`, `leadership`, `mobile-design`, `ui-visual-design`, `product-design`, `ux-design-research`, `web-design` |
| `location` | string | `""` | Free-text location (e.g. "New York", "London") |
| `openToRemote` | boolean | `false` | Include remote-friendly jobs |
| `fullTime` | boolean | `false` | Filter for full-time positions |
| `freelanceOrContract` | boolean | `false` | Filter for freelance/contract positions |
| `maxPages` | integer | `5` | Max listing pages to scrape (up to 48 jobs/page) |
| `maxResults` | integer | `50` | Max jobs to return (0 = unlimited) |

### Output data

Each job is enriched with its detail page automatically:

```json
{
    "jobId": 301001,
    "title": "Junior or Mid-Weight Graphic Designer",
    "url": "https://dribbble.com/jobs/301001-JUNIOR-OR-MID-WEIGHT-GRAPHIC-DESIGNER",
    "companyName": "Big Monocle",
    "companyLogoUrl": "https://cdn.dribbble.com/users/...",
    "location": "Utah",
    "isRemote": false,
    "postedAgo": "about 12 hours ago",
    "description": "Big Monocle is looking for a Junior Designer based in UTAH...",
    "descriptionHtml": "<p>Big Monocle is looking for a Junior Designer...</p>",
    "jobType": "Full-time",
    "datePosted": "2026-04-03",
    "validThrough": "2026-05-03",
    "salary": "USD 48000 - 61000",
    "companyWebsite": "https://bigmonocle.com/",
    "companyDescription": "Strategy-led creative agency...",
    "applyUrl": "mailto:jobs@bigmonocle.com",
    "locationDetail": {
        "city": "Utah",
        "region": "UT",
        "country": "US"
    },
    "scrapedAt": "2026-04-04T12:00:00.000Z"
}
```

### Use with the Apify API

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("parsebird/dribbble-jobs-scraper").call(run_input={
    "specialties": ["product-design", "ux-design-research"],
    "location": "New York",
    "openToRemote": True,
    "maxResults": 50,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['title']} at {item['companyName']} - {item.get('jobType', 'N/A')}")
```

### Pricing

This Actor uses **Pay-per-event** pricing:

| Event | Cost | Rate |
|-------|------|------|
| `dribbble-job-detail` | $0.002 | $2 per 1,000 jobs |

**Cost examples:**

- 10 jobs: $0.02
- 50 jobs: $0.10
- 100 jobs: $0.20
- 500 jobs: $1.00
- 1,000 jobs: $2.00

You only pay for the jobs actually returned.

### Tips and best practices

- **Start small** — Set `maxResults` to 5-10 to preview the data before running larger scrapes
- **Keep filters minimal** — The more filters you apply simultaneously, the fewer results you'll get. Dribbble applies filters as AND conditions, so combining specialties + location + remote can return very few results
- **Location is free text** — You can type any city, state, or country name. If you get zero results, try a broader term
- **Scheduling** — Set up daily or weekly runs to track new design job postings

### Integrations

Connect this Actor to your workflow:

- **Google Sheets** — Export results directly
- **Webhooks** — Trigger actions when new data arrives
- **API** — Access data programmatically via the Apify API
- **Zapier / Make** — Automate downstream workflows

### Limitations

- Salary data is not always available — it depends on whether the employer included it in the job description. When available, it's extracted from the detail page.
- Apply URLs are extracted from description links (mailto or external URLs). Some jobs gate applications behind Dribbble's signup flow.
- Detail pages are fetched sequentially with small delays to avoid rate limiting.

# Actor input Schema

## `keyword` (type: `string`):

Free-text search by company, skill, or tag.

## `specialties` (type: `array`):

Filter by one or more design specialties. Leave empty to scrape all.

## `location` (type: `string`):

Free-text location filter (e.g. "New York", "San Francisco", "London"). Leave empty for all locations.

## `openToRemote` (type: `boolean`):

Include remote-friendly jobs.

## `fullTime` (type: `boolean`):

Filter for full-time positions only.

## `freelanceOrContract` (type: `boolean`):

Filter for freelance or contract positions only.

## `maxPages` (type: `integer`):

Maximum number of listing pages to scrape. Each page has up to 48 jobs.

## `maxResults` (type: `integer`):

Maximum number of jobs to return. Set to 0 for unlimited.

## Actor input object example

```json
{
  "keyword": "",
  "specialties": [],
  "location": "",
  "openToRemote": false,
  "fullTime": false,
  "freelanceOrContract": false,
  "maxPages": 5,
  "maxResults": 50
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/dribbble-jobs-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/dribbble-jobs-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 '{}' |
apify call parsebird/dribbble-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/dribbble-jobs-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/6ryNbHSb955HOJqur/builds/fw0OxrugjSznrgptu/openapi.json
