# Toptal Job Scraper | Premium Freelance Jobs (`ahmed_jasarevic/toptal-scraper`) Actor

Scrapes Toptal job listings, skill categories, and talent network data. Extracts job titles, skills, commitment types, and more from the world's top freelance platform.

- **URL**: https://apify.com/ahmed\_jasarevic/toptal-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:**
- **Stats:** 2 total users, 1 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.

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

## Toptal Scraper

Scrape **Toptal job listings** from the world's top freelance talent platform. Extract job titles, skills, commitment types, work locations, and more from Toptal's curated network of freelance opportunities.

### What does Toptal Scraper do?

This Actor scrapes publicly available job listings from [Toptal.com](https://www.toptal.com), including:

- **Job titles** and descriptions
- **Required skills** and technology tags
- **Commitment types** (Part-time, Full-time, Hourly)
- **Estimated project length**
- **Work type** (Remote, On-site, Hybrid)
- **Timezone requirements**
- **Category** (Developers, Designers, Project Managers, etc.)

Perfect for agencies, enterprise recruiters, talent-sourcing teams, and gig-economy researchers who need insights into the freelance job market.

### Why use Toptal Scraper?

- **Market Intelligence**: Understand what skills are in demand on premium freelance platforms
- **Competitive Analysis**: See what types of projects top companies are hiring for
- **Talent Sourcing**: Identify skill requirements for recruiting strategies
- **Research**: Analyze freelance market trends, rates, and project types

### How to use Toptal Scraper

1. **Add to Apify** - Click "Try for free" or "Add to my account"
2. **Configure Input** - Set your scraping preferences:
   - Choose which categories to scrape (Developers, Designers, etc.)
   - Enable skill category pages for deeper coverage
   - Set maximum jobs per category
3. **Run the Actor** - Click "Start" and monitor progress
4. **Export Results** - Download dataset in JSON, CSV, HTML, or Excel

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | array | Developer jobs page | URLs to start scraping from |
| `scrapeCategories` | boolean | false | Also scrape skill category pages |
| `maxJobsPerCategory` | integer | 20 | Max job pages per category (0 = unlimited) |
| `maxRequestsPerCrawl` | integer | 200 | Total pages to scrape limit |
| `proxyConfiguration` | object | Apify proxy enabled | Proxy settings for anti-bot protection |

### Output

The Actor outputs a dataset with the following fields:

```json
{
  "title": "Remote Python Engineer Job for a Health Tech Startup",
  "url": "https://www.toptal.com/freelance-jobs/developers/django/python-engineer-65",
  "category": "Developers",
  "skillSubcategory": "django",
  "description": "We're a health tech startup launching a new product...",
  "skills": ["Python", "Django", "Web Application", "Javascript"],
  "commitmentType": "Part Time",
  "estimatedLength": "1-2 weeks",
  "workType": "Remote",
  "timezone": "Los Angeles",
  "scrapedAt": "2026-09-01T10:00:00.000Z"
}
```

### Data Fields

| Field | Description |
|-------|-------------|
| `title` | Job listing title |
| `url` | Direct link to the job page |
| `category` | Main category (Developers, Designers, etc.) |
| `skillSubcategory` | Specific skill area (python, react, etc.) |
| `description` | Job description excerpt |
| `skills` | Array of required skills/technologies |
| `commitmentType` | Part Time, Full Time, or Hourly |
| `estimatedLength` | Project duration estimate |
| `workType` | Remote, On-site, or Hybrid |
| `timezone` | Required timezone/location |
| `scrapedAt` | Timestamp of when data was collected |

### Pricing

This Actor runs on Apify's pricing model:

- **Free tier**: 10 items per run
- **Paid plan**: Unlimited items

Cost estimate for a full run (200 pages): ~$0.10-$0.50 on Apify platform (depending on proxy usage).

### Tips

- **Start small**: Begin with `maxRequestsPerCrawl: 50` to test
- **Enable categories**: Set `scrapeCategories: true` for comprehensive coverage
- **Use proxy**: Keep `useApifyProxy: true` for reliable scraping
- **Schedule runs**: Set up daily/weekly schedules to track new job listings

### Known Limitations

- **Freelancer profiles are not public**: Toptal is an exclusive network - individual freelancer profiles (name, hourly rate, JSS, badges) require client login and cannot be scraped
- **Anti-bot protection**: Toptal uses Cloudflare; the Actor uses Apify proxy to handle this
- **Dynamic content**: Some job details may be loaded via JavaScript; the Actor extracts what's available in server-rendered HTML

### Legal Disclaimer

This Actor scrapes publicly available job listings from Toptal.com. Users are responsible for complying with Toptal's Terms of Service and applicable laws. This tool is intended for legitimate research and business intelligence purposes.

### Support

- Found a bug? Open an issue on the Issues tab
- Need a custom build? Contact for custom Actor development
- Questions? Check the FAQ or reach out via Apify console

### SEO Keywords

toptal scraper, toptal jobs data, freelance talent jobs, toptal job listings, freelance project data, toptal skills data, remote freelance jobs, toptal api alternative, top freelance talent data, toptal developer jobs, toptal designer jobs, freelance job market data, toptal hire data, scrape toptal, freelance talent sourcing, toptal job export, inserting freelance opportunities, toptal work locations, freelance skills market, toptal recruiter data

### Related Actors

- [Indeed Job Scraper](https://apify.com/actor/indeed-job-scraper)
- [Glassdoor Scraper](https://apify.com/actor/glassdoor-scraper)
- [Upwork Scraper](https://apify.com/actor/upwork-scraper)

# Actor input Schema

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

URLs to start scraping from. Leave empty to use default Toptal job listing pages.

## `scrapeCategories` (type: `boolean`):

Also scrape skill category pages (e.g., /freelance-jobs/developers/python)

## `maxJobsPerCategory` (type: `integer`):

Maximum number of job detail pages to scrape per category (0 = unlimited)

## `maxRequestsPerCrawl` (type: `integer`):

Maximum total number of pages to scrape

## `proxyConfiguration` (type: `object`):

Proxy settings for anti-bot protection. Uses Apify proxy by default.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.toptal.com/freelance-jobs/developers/jobs"
    },
    {
      "url": "https://www.toptal.com/freelance-jobs/designers/jobs"
    },
    {
      "url": "https://www.toptal.com/freelance-jobs/project-managers/jobs"
    },
    {
      "url": "https://www.toptal.com/freelance-jobs/product-managers/jobs"
    },
    {
      "url": "https://www.toptal.com/freelance-jobs/management-consultants/jobs"
    }
  ],
  "scrapeCategories": false,
  "maxJobsPerCategory": 20,
  "maxRequestsPerCrawl": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://www.toptal.com/freelance-jobs/developers/jobs"
        },
        {
            "url": "https://www.toptal.com/freelance-jobs/designers/jobs"
        },
        {
            "url": "https://www.toptal.com/freelance-jobs/project-managers/jobs"
        },
        {
            "url": "https://www.toptal.com/freelance-jobs/product-managers/jobs"
        },
        {
            "url": "https://www.toptal.com/freelance-jobs/management-consultants/jobs"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/toptal-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 = { "startUrls": [
        { "url": "https://www.toptal.com/freelance-jobs/developers/jobs" },
        { "url": "https://www.toptal.com/freelance-jobs/designers/jobs" },
        { "url": "https://www.toptal.com/freelance-jobs/project-managers/jobs" },
        { "url": "https://www.toptal.com/freelance-jobs/product-managers/jobs" },
        { "url": "https://www.toptal.com/freelance-jobs/management-consultants/jobs" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/toptal-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 '{
  "startUrls": [
    {
      "url": "https://www.toptal.com/freelance-jobs/developers/jobs"
    },
    {
      "url": "https://www.toptal.com/freelance-jobs/designers/jobs"
    },
    {
      "url": "https://www.toptal.com/freelance-jobs/project-managers/jobs"
    },
    {
      "url": "https://www.toptal.com/freelance-jobs/product-managers/jobs"
    },
    {
      "url": "https://www.toptal.com/freelance-jobs/management-consultants/jobs"
    }
  ]
}' |
apify call ahmed_jasarevic/toptal-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/toptal-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/Kl37qPgepLIKA2I5d/builds/d0eUe8vrSwhKBLVMw/openapi.json
