Freelancer Jobs Scraper

Scrape public Freelancer.com project listings by keyword, category, or URL. Extract budgets, bids, skills, time left, and verified-payment signals.

Data fields

FieldTypeDescription
titlestringValue exported as title.
urlstringValue exported as url.
projectIdstring | nullValue exported as projectId.
slugstring | nullValue exported as slug.
categorystring | nullValue exported as category.
descriptionSnippetstring | nullValue exported as descriptionSnippet.
budgetstring | nullValue exported as budget.
currencystring | nullValue exported as currency.

Input preview

startUrlsStart URLs
queriesKeyword searches
categoriesCategory slugs
maxItemsMaximum projects
maxPagesMaximum pages per source
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Extract public Freelancer.com project listings by keyword, category, or URL.

Use this actor to monitor new freelance projects, collect lead lists, compare budgets, track skill demand, and export structured data from public Freelancer.com job result pages.

What does Freelancer Jobs Scraper do?

Freelancer Jobs Scraper collects project cards from public Freelancer.com listing pages.

It returns clean project data such as title, project URL, description snippet, budget, bid count, skills, time left, payment verification, and source metadata.

You can scrape category pages, keyword searches, and exact URLs.

Who is it for?

  • ๐Ÿง‘โ€๐Ÿ’ป Freelancers looking for fresh project opportunities.
  • ๐Ÿข Agencies monitoring outsourcing demand.
  • ๐Ÿ“ˆ Sales teams finding companies with active project needs.
  • ๐Ÿ”Ž Recruiters tracking skill demand across public freelance projects.
  • ๐Ÿ“Š Analysts comparing budgets and proposal competition.

Why use this actor?

Manual Freelancer.com monitoring is repetitive.

This actor turns public project listings into exportable rows.

You can run it every day, connect it to alerts, or send the data to your CRM.

Input settings

Setting JSON key Type / default Description
Start URLs startUrls array, default [{"url":"https://www.freelancer.com/jobs/web-scraping/"}] Freelancer.com jobs, category, keyword, or paginated URLs to scrape.
Keyword searches queries array, default ["web scraping"] Keywords to search in public Freelancer projects, such as web scraping or lead generation.
Category slugs categories array, default ["web-scraping"] Freelancer category slugs from URLs, for example web-scraping, python, or data-entry.
Maximum projects maxItems integer, default 20 Maximum number of project listings to save across all sources.
Maximum pages per source maxPages integer, default 2 Maximum paginated Freelancer result pages to open for each source.
Proxy configuration proxyConfiguration object, default {"useApifyProxy":false} Optional Apify Proxy settings. Leave empty for direct requests; use datacenter proxies first if your runs are rate limited.

Input options

You can combine multiple source types in one run.

  • startUrls accepts Freelancer.com job, category, search, and paginated URLs.
  • queries accepts keyword strings such as web scraping.
  • categories accepts category slugs such as web-scraping or python.
  • maxItems limits total saved projects.
  • maxPages limits pages opened per source.
  • proxyConfiguration lets you enable Apify Proxy if needed.

Example input

{
  "startUrls": [
    {
      "url": "https://www.freelancer.com/jobs/web-scraping/"
    }
  ],
  "queries": [
    "web scraping"
  ],
  "categories": [
    "web-scraping"
  ],
  "maxItems": 20,
  "maxPages": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Output example

{
  "title": "Build a High-Speed Python Automation Bot for My Website",
  "url": "https://www.freelancer.com/projects/automation/build-high-speed-python-automation",
  "projectId": "build-high-speed-python-automation",
  "slug": "build-high-speed-python-automation",
  "category": "automation",
  "descriptionSnippet": "I am looking for an experienced Python automation developer...",
  "budget": "$250",
  "currency": "USD",
  "bidCount": 48,
  "averageBid": "$250",
  "timeLeft": "6 days left",
  "postedAt": null,
  "skills": ["Automation", "Python", "Selenium", "Web Scraping"],
  "clientVerifiedPayment": true,
  "sourceUrl": "https://www.freelancer.com/jobs/web-scraping/",
  "scrapedAt": "2026-07-02T08:00:00.000Z"
}

How to scrape by category

  1. Open a Freelancer.com category page.
  2. Copy the slug from the URL.
  3. Add it to categories.
  4. Set maxItems.
  5. Run the actor.
  6. Export the dataset.

How to scrape by keyword

Add one or more keyword phrases to queries.

The actor creates public Freelancer jobs search URLs and extracts matching project cards.

Use specific phrases for better lead quality.

How to scrape exact URLs

Paste public Freelancer.com URLs into startUrls.

This is useful when you already have a search URL, category URL, or page 2+ URL you want to monitor.

Tips for better results

  • ๐ŸŽฏ Use specific categories for focused lead lists.
  • ๐Ÿงช Start with maxItems between 20 and 50.
  • ๐Ÿ“Œ Use scheduled runs for daily monitoring.
  • ๐Ÿงน Remove duplicate rows by url in your downstream tool.
  • ๐ŸŒ Enable proxy only if your network is rate limited.

Integrations

Send output to Google Sheets for lead review.

Send output to Airtable for enrichment.

Send output to a CRM for sales follow-up.

Send output to Slack or email for new project alerts.

Use Apify webhooks to trigger workflows after each run.

API usage

Run Freelancer Jobs Scraper from your own code with the Apify API.

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
  "startUrls": [
    {
      "url": "https://www.freelancer.com/jobs/web-scraping/"
    }
  ],
  "queries": [
    "web scraping"
  ],
  "categories": [
    "web-scraping"
  ],
  "maxItems": 20,
  "maxPages": 2
};

const run = await client.actor('fetch_cat/freelancer-jobs-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/freelancer-jobs-scraper").call(run_input={
  "startUrls": [
    {
      "url": "https://www.freelancer.com/jobs/web-scraping/"
    }
  ],
  "queries": [
    "web scraping"
  ],
  "categories": [
    "web-scraping"
  ],
  "maxItems": 20,
  "maxPages": 2
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~freelancer-jobs-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://www.freelancer.com/jobs/web-scraping/"}],"queries":["web scraping"],"categories":["web-scraping"],"maxItems":20,"maxPages":2}'

Use with AI agents via MCP

Freelancer Jobs Scraper can be used by AI assistants through the hosted Apify MCP server.

Claude Code setup

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/freelancer-jobs-scraper"

Claude Desktop, Cursor, or VS Code JSON config

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/freelancer-jobs-scraper"
    }
  }
}

Example prompts

  • "Run Freelancer Jobs Scraper with this input JSON and summarize the dataset."
  • "Export the latest Freelancer Jobs Scraper results to a table I can review."
  • "Schedule this Actor for monitoring and tell me what changed between runs."

Scheduling

Create a scheduled Apify task to run this actor daily or hourly.

Use a low maxItems value for frequent monitoring.

Use higher limits for periodic market research.

Data quality notes

Freelancer.com listing pages show public project summaries.

Some fields may be missing when Freelancer does not show them on a listing card.

Private or removed projects may not expose full details.

Limits

The actor extracts public listing-card data.

It does not log in.

It does not submit bids.

It does not message clients.

It does not bypass private project restrictions.

Legality

Only scrape public data.

Respect Freelancer.com's terms and applicable laws.

Do not use the data for spam.

Use reasonable run sizes and schedules.

Troubleshooting

Why did I get fewer results than maxItems?

The selected pages may contain fewer public projects, duplicates, or ended projects.

Increase maxPages or add more categories.

Why are some budgets or dates empty?

Freelancer.com does not show every value on every listing card.

The actor returns null when a public field is not visible.

Should I use a proxy?

Start without a proxy.

If you see rate limits from your network, enable Apify Proxy with a datacenter group first.

Support

Report bugs, wrong output, blocked runs, or missing fields from the Actor page. Include the Apify run ID or run URL, your input JSON, what you expected, what the Actor returned, and one reproducible public URL so the issue can be tested quickly.

Common questions

Questions and answers reused from the canonical actor README.

Is this an official Freelancer.com API?

No. This actor extracts public listing data and is not affiliated with Freelancer.com.

Can it bid on projects or message clients?

No. It only returns public project listing data.