# 🎨 Dribbble Shots Scraper — Designs, Tags & Stats (`hipersoft/dribbble-shots-scraper`) Actor

Scrape public design shots from Dribbble: title, high-res image, tags, likes, views and designer credit. Filter by category or sort, export JSON, CSV or Excel.

- **URL**: https://apify.com/hipersoft/dribbble-shots-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0015 / shot scraped

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🎨 Dribbble Shots Scraper — Designs, Tags & Stats

Scrape public design **shots** from **Dribbble** and export clean, structured data. Browse by **sort** (popular, recent), narrow down to a **category or tag** (mobile, illustration, animation, web-design…), pick a **timeframe**, run a **keyword search** — or paste a ready-made Dribbble feed or shot URL — and get one tidy row per shot: title, high-resolution image, engagement stats and the designer credit. Download everything as **JSON, CSV or Excel**, or pull it straight from the API.

Great for design-trend research, mood-board and inspiration feeds, creative-market analysis, or powering your own gallery with fresh, structured shot data.

### What it does

- 🔥 **Sort the feed** — collect the most-appreciated (Popular) or the newest (Recent) shots.
- 🏷️ **Filter by category / tag** — focus on a niche like `mobile`, `illustration`, `animation`, `web-design`, `branding` or `typography`.
- 🗓️ **Timeframe** — for the Popular feed, keep shots trending this week, month, year or all time.
- 🔎 **Keyword search** — look up shots by term (e.g. `dashboard`, `logo`, `3d`).
- 🔗 **Paste Start URLs** — drop in any Dribbble feed or single-shot URL straight from your browser.
- 🖼️ **High-res images** — capture the best available preview image for every shot.
- 💗 **Engagement stats** — likes and views per shot, so you can rank by traction.
- 🙋 **Designer credit** — the shot's designer handle and profile link, kept as attribution for the work.
- 🧾 **Optional full details** — enable *Include full details* for the description, tags and exact stats where available.
- 📤 **Clean, flat output** — ready for spreadsheets, databases and dashboards.

### Input

| Field | Description |
| --- | --- |
| **Sort / feed** | Order the feed: Popular, Recent or Following. |
| **Category / tag** | Optional. Limit the feed to one Dribbble category or tag (e.g. `mobile`, `illustration`). |
| **Timeframe** | Optional. For the Popular feed, restrict to this week / month / year / all time. |
| **Search query** | Optional. Search shots by keyword. |
| **Start URLs** | Optional list of Dribbble feed or single-shot URLs. When set, these are used instead of the fields above. |
| **Include full details** | Fetch each shot's page for extra fields. Slower, richer output. |
| **Max items** | Maximum number of shots to collect (0 = no limit). |

#### Example input

```json
{
  "sort": "popular",
  "tag": "mobile",
  "timeframe": "month",
  "maxItems": 100
}
```

### Output

Each shot is one record. Example (fields vary by shot):

```json
{
  "shotId": "27706847",
  "title": "Soma - Glucose Monitoring Mobile App",
  "url": "https://dribbble.com/shots/27706847-Soma-Glucose-Monitoring-Mobile-App",
  "imageUrl": "https://cdn.dribbble.com/userupload/48932205/file/....jpg",
  "tags": ["mobile", "healthcare", "ui design"],
  "likesCount": 87,
  "viewsCount": 4900,
  "designerHandle": "RonDesignLab",
  "designerName": "RonDesignLab",
  "designerUrl": "https://dribbble.com/RonDesignLab",
  "publishedDate": null,
  "description": null,
  "sourceUrl": "https://dribbble.com/shots?sort=popular"
}
```

### Use cases

- **Design-trend research** — track what's popular in a category and how tastes shift over time.
- **Inspiration & mood-board feeds** — pull fresh shots into your own gallery or brief.
- **Creative-market analysis** — benchmark engagement across styles, categories and timeframes.
- **Dashboards & aggregators** — power your own board or analytics with clean, structured data.

### FAQ

**Do I need an account or credentials?** No. Just set your feed and run.

**Can I scrape a specific feed from my browser?** Yes — paste one or more Dribbble feed or shot URLs into **Start URLs**.

**Can I focus on one category?** Yes — set **Category / tag** (e.g. `illustration`) to keep just that niche.

**How do I get the description and tags?** Enable **Include full details** to add them where the shot page exposes them.

*This tool collects only public design shots and their public engagement stats. The designer handle is captured purely as attribution for the creative work — it does not collect private, contact or account data.*

# Actor input Schema

## `sort` (type: `string`):

How to order the shots feed. Popular = most-appreciated, Recent = newest, Following = shots from designers you follow (needs a session and may return nothing).

## `tag` (type: `string`):

Optional. Limit the feed to one Dribbble category or tag (e.g. "mobile", "illustration", "animation", "web-design", "branding", "typography"). Leave empty for all shots.

## `timeframe` (type: `string`):

Optional. For the Popular feed, restrict to shots trending within this window.

## `query` (type: `string`):

Optional. Search shots by keyword (e.g. "dashboard", "logo", "3d"). Search coverage can be limited; the sort/tag feed is the most reliable source.

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

Optional. One or more Dribbble shots-feed URLs (e.g. https://dribbble.com/shots?sort=recent) or single shot URLs (https://dribbble.com/shots/<id>). Paste them straight from your browser. When set, these are used instead of the fields above.

## `includeDetail` (type: `boolean`):

Fetch each shot's page for extra fields (full description, tags and exact stats). Slower and richer, but detail pages are not always reachable — the feed row is always kept either way.

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

Maximum number of shots to collect across all feeds (0 = no limit; collect everything the feeds return).

## Actor input object example

```json
{
  "sort": "popular",
  "timeframe": "",
  "includeDetail": false,
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# 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("hipersoft/dribbble-shots-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("hipersoft/dribbble-shots-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 hipersoft/dribbble-shots-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/dribbble-shots-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/v8ExhMxuvHKvVsVya/builds/pHRIdEMvwDZNz6Prb/openapi.json
