# 99designs Designers Directory Scraper (`crawlerbros/99designs-scraper`) Actor

Scrapes designer profiles from 99designs marketplace including portfolio stats, ratings, skills, location, and contact details

- **URL**: https://apify.com/crawlerbros/99designs-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Developer tools, Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## 99designs Designers Directory Scraper

Scrape graphic designer profiles from [99designs](https://99designs.com/designers) — the world's largest freelance design marketplace. Extract designer names, levels, countries, portfolio stats, contest wins, review counts, bios, and direct profile links.

### Features

- **Browse mode** — search the designers directory with keywords and optional design category filter
- **Profiles mode** — scrape specific designers by profile URL or ID
- 16 design categories supported: Logo Design, Web Design, Illustration, T-Shirt Design, Packaging, and more
- Extracts rich stats: contests won, runner-up count, 1-to-1 projects, repeat clients
- No login or API key required

### Input

| Field | Type | Description |
|-------|------|-------------|
| `mode` | select | `browse` (directory search) or `profiles` (specific URLs) |
| `searchQuery` | string | Keyword to filter designers (used in browse mode) |
| `category` | select | Design category filter (Logo Design, Web Design, etc.) |
| `profileUrls` | array | Profile URLs or IDs to scrape (used in profiles mode) |
| `maxItems` | integer | Max number of profiles to return (1–200, default 20) |

### Output

Each record contains:

| Field | Description |
|-------|-------------|
| `profileId` | Unique 99designs profile ID |
| `name` | Designer display name |
| `level` | Designer tier (Top Level, Mid Level, etc.) |
| `country` | Country of residence |
| `bio` | Short bio/about text |
| `memberSince` | Join date on 99designs |
| `totalDesigns` | Total portfolio designs |
| `totalLikes` | Total likes across portfolio |
| `reviewCount` | Number of client reviews |
| `contestsWon` | Total contest wins |
| `runnerUp` | Times placed as runner-up |
| `projectsCompleted` | Total 1-to-1 projects completed |
| `repeatClients` | Number of repeat clients |
| `avatarUrl` | Profile picture URL |
| `url` | Direct link to designer's profile |
| `scrapedAt` | ISO 8601 scrape timestamp |
| `recordType` | Always `"designer"` |

### Example Output

```json
{
  "profileId": "2157566",
  "name": "Wiell",
  "level": "Top Level",
  "country": "Philippines",
  "bio": "I will help you to draw your imagine",
  "memberSince": "October 02, 2015",
  "totalDesigns": 46,
  "totalLikes": 1473,
  "reviewCount": 52,
  "contestsWon": 67,
  "runnerUp": 133,
  "projectsCompleted": 20,
  "repeatClients": 11,
  "avatarUrl": "https://99designs.com/avatars/users/2157566/128",
  "url": "https://99designs.com/profiles/2157566",
  "scrapedAt": "2026-05-22T10:00:00+00:00",
  "recordType": "designer"
}
````

### FAQ

**Does this require a 99designs account or API key?**
No — all data is extracted from public profile pages. No authentication required.

**How many designers can I scrape?**
The directory shows ~20-30 results per search. Use `profiles` mode with specific IDs to scrape any number of known designers.

**Which design categories are supported?**
Logo Design, Web Design, Business Card Design, Illustration, T-Shirt Design, Packaging Design, Brochure Design, Flyer Design, Social Media Design, Infographic Design, Book Cover Design, Stationery Design, App Design, Email Design, and Advertising Design.

**What does "Top Level" mean?**
99designs has tiered designer levels. Top Level designers have the most experience and ratings on the platform.

**Can I scrape specific designers?**
Yes — use `mode = profiles` and provide profile URLs (e.g. `https://99designs.com/profiles/2157566`) or just the numeric IDs.

# Actor input Schema

## `mode` (type: `string`):

How to discover designers: browse the designers directory, or scrape specific designer profiles by URL or ID.

## `searchQuery` (type: `string`):

Keyword to filter designers (e.g. 'logo designer', 'web design'). Used in browse mode.

## `category` (type: `string`):

Filter designers by design category.

## `profileUrls` (type: `array`):

List of 99designs profile URLs or profile IDs to scrape (used when mode = profiles). Example: https://99designs.com/profiles/2157566 or 2157566

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

Maximum number of designer profiles to return.

## Actor input object example

```json
{
  "mode": "browse",
  "searchQuery": "logo designer",
  "category": "",
  "profileUrls": [],
  "maxItems": 5
}
```

# 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 = {
    "mode": "browse",
    "searchQuery": "logo designer",
    "profileUrls": [],
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/99designs-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 = {
    "mode": "browse",
    "searchQuery": "logo designer",
    "profileUrls": [],
    "maxItems": 5,
}

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

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

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

```

## CLI example

```bash
echo '{
  "mode": "browse",
  "searchQuery": "logo designer",
  "profileUrls": [],
  "maxItems": 5
}' |
apify call crawlerbros/99designs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/99designs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "99designs Designers Directory Scraper",
        "description": "Scrapes designer profiles from 99designs marketplace including portfolio stats, ratings, skills, location, and contact details",
        "version": "0.1",
        "x-build-id": "nocRfBu4HU27chn2d"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~99designs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-99designs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~99designs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-99designs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~99designs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-99designs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Scrape Mode",
                        "enum": [
                            "browse",
                            "profiles"
                        ],
                        "type": "string",
                        "description": "How to discover designers: browse the designers directory, or scrape specific designer profiles by URL or ID.",
                        "default": "browse"
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword to filter designers (e.g. 'logo designer', 'web design'). Used in browse mode."
                    },
                    "category": {
                        "title": "Design Category",
                        "enum": [
                            "",
                            "logo-design",
                            "web-design",
                            "business-card-design",
                            "illustration",
                            "t-shirt-design",
                            "packaging-design",
                            "brochure-design",
                            "flyer-design",
                            "social-media-design",
                            "infographic-design",
                            "book-cover-design",
                            "stationery-design",
                            "app-design",
                            "email-design",
                            "advertising-design"
                        ],
                        "type": "string",
                        "description": "Filter designers by design category.",
                        "default": ""
                    },
                    "profileUrls": {
                        "title": "Profile URLs or IDs",
                        "type": "array",
                        "description": "List of 99designs profile URLs or profile IDs to scrape (used when mode = profiles). Example: https://99designs.com/profiles/2157566 or 2157566",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of designer profiles to return.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
