Nimbryxo Studio

Freelancer.com Project Budget & Bids Scraper

Pull Freelancer.com projects from direct links, search keywords, category pages or a user's posted-project list, with budget or hourly rate, bid count, days left, skills and description.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredHow to find projects. `auto` detects the mode from the fields you fill in, `search` uses a keyword, `byProject` uses project URLs/ids, and `byCategory` browses a skill/category page.
querystringoptionalKeyword used in mode=search, e.g. `python`, `logo design`, `data entry`. Required for search mode.
projectUrlsarrayoptionalFull Freelancer project URLs, paths or numeric project ids used in mode=byProject, e.g. https://www.freelancer.com/projects/python/my-project or 40425363.
Show all input fields
FieldTypeRequiredDescription
modestringrequiredHow to find projects. `auto` detects the mode from the fields you fill in, `search` uses a keyword, `byProject` uses project URLs/ids, and `byCategory` browses a skill/category page.
querystringoptionalKeyword used in mode=search, e.g. `python`, `logo design`, `data entry`. Required for search mode.
projectUrlsarrayoptionalFull Freelancer project URLs, paths or numeric project ids used in mode=byProject, e.g. https://www.freelancer.com/projects/python/my-project or 40425363.
categoryUrlsarrayoptionalFreelancer /jobs/<skill>/ URLs or skill slugs used in mode=byCategory, e.g. https://www.freelancer.com/jobs/python/ or `website-design`.
projectTypestringoptionalKeep fixed-price projects, hourly projects, or both.
budgetMinintegeroptionalMinimum fixed budget or hourly rate in USD. Use 0 for no minimum. When projectType=any, the range is applied to both types.
budgetMaxintegeroptionalMaximum fixed budget or hourly rate in USD. Use 0 for no maximum. When projectType=any, the range is applied to both types.
minBidCountintegeroptionalOnly keep projects with at least this many bids. Use 0 for no minimum.
maxBidCountintegeroptionalOnly keep projects with at most this many bids. Use 0 for no maximum.
skillsarrayoptionalSkill names, slugs or numeric ids to narrow the search, e.g. `Python`, `website-design` or `13`.
languagesarrayoptionalISO 639-1 language codes, e.g. `en`, `de`, `hi`, `es`.
postedAfterstringoptionalOnly keep projects posted on or after this date. ISO date or datetime, e.g. `2026-01-01` or `2026-01-01T12:00:00Z`.
postedBeforestringoptionalOnly keep projects posted on or before this date. ISO date or datetime, e.g. `2026-12-31` or `2026-12-31T23:59:59Z`.
includeClosedbooleanoptionalAlso search closed projects in search/category modes. Direct project URLs and ids always work for closed projects.
includeDetailsbooleanoptionalFetch the public project page for employer country/rating/reviews, verification flags, page title and posting text. Adds one request per project.
includeBidsbooleanoptionalFetch individual bids with bidder identity, amount, delivery period and proposal text. Adds one request per project.
maxBidsPerProjectintegeroptionalHow many individual bids to return per project when `includeBids` is enabled.
sortBystringoptionalOrder of search/category results. Ending-soon and budget sorts are applied to the collected candidate pool.
maxPagesintegeroptionalMaximum listing pages to request. Each page contains up to 99 projects.
maxItemsintegeroptionalHard cap on emitted project records.

Download the published input schema

View complete JSON
{
  "description": "Collect Freelancer.com projects by keyword, category or direct project URL/id, with fixed/hourly budgets, skills, languages, bids, employer details and dates.",
  "properties": {
    "budgetMax": {
      "default": 0,
      "description": "Maximum fixed budget or hourly rate in USD. Use 0 for no maximum. When projectType=any, the range is applied to both types.",
      "maximum": 10000000,
      "minimum": 0,
      "prefill": 0,
      "title": "Maximum budget (USD)",
      "type": "integer"
    },
    "budgetMin": {
      "default": 0,
      "description": "Minimum fixed budget or hourly rate in USD. Use 0 for no minimum. When projectType=any, the range is applied to both types.",
      "maximum": 10000000,
      "minimum": 0,
      "prefill": 0,
      "title": "Minimum budget (USD)",
      "type": "integer"
    },
    "categoryUrls": {
      "default": [],
      "description": "Freelancer /jobs/<skill>/ URLs or skill slugs used in mode=byCategory, e.g. https://www.freelancer.com/jobs/python/ or `website-design`.",
      "editor": "stringList",
      "prefill": [],
      "title": "Category or skill URLs",
      "type": "array"
    },
    "includeBids": {
      "default": false,
      "description": "Fetch individual bids with bidder identity, amount, delivery period and proposal text. Adds one request per project.",
      "prefill": false,
      "title": "Fetch bid lists",
      "type": "boolean"
    },
    "includeClosed": {
      "default": false,
      "description": "Also search closed projects in search/category modes. Direct project URLs and ids always work for closed projects.",
      "prefill": false,
      "title": "Include closed projects",
      "type": "boolean"
    },
    "includeDetails": {
      "default": true,
      "description": "Fetch the public project page for employer country/rating/reviews, verification flags, page title and posting text. Adds one request per project.",
      "prefill": false,
      "title": "Fetch project details",
      "type": "boolean"
    },
    "languages": {
      "default": [],
      "description": "ISO 639-1 language codes, e.g. `en`, `de`, `hi`, `es`.",
      "editor": "stringList",
      "prefill": [],
      "title": "Project languages",
      "type": "array"
    },
    "maxBidCount": {
      "default": 0,
      "description": "Only keep projects with at most this many bids. Use 0 for no maximum.",
      "maximum": 1000000,
      "minimum": 0,
      "prefill": 0,
      "title": "Maximum bid count",
      "type": "integer"
    },
    "maxBidsPerProject": {
      "default": 20,
      "description": "How many individual bids to return per project when `includeBids` is enabled.",
      "maximum": 1000,
      "minimum": 1,
      "prefill": 1,
      "title": "Max bids per project",
      "type": "integer"
    },
    "maxItems": {
      "default": 50,
      "description": "Hard cap on emitted project records.",
      "maximum": 10000,
      "minimum": 1,
      "prefill": 3,
      "title": "Max items",
      "type": "integer"
    },
    "maxPages": {
      "default": 5,
      "description": "Maximum listing pages to request. Each page contains up to 99 projects.",
      "maximum": 100,
      "minimum": 1,
      "prefill": 1,
      "title": "Max pages",
      "type": "integer"
    },
    "minBidCount": {
      "default": 0,
      "description": "Only keep projects with at least this many bids. Use 0 for no minimum.",
      "maximum": 1000000,
      "minimum": 0,
      "prefill": 0,
      "title": "Minimum bid count",
      "type": "integer"
    },
    "mode": {
      "default": "auto",
      "description": "How to find projects. `auto` detects the mode from the fields you fill in, `search` uses a keyword, `byProject` uses project URLs/ids, and `byCategory` browses a skill/category page.",
      "editor": "select",
      "enum": [
        "auto",
        "search",
        "byProject",
        "byCategory"
      ],
      "enumTitles": [
        "Auto-detect from inputs",
        "Search by keyword",
        "Fetch specific projects",
        "Browse a category or skill"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "postedAfter": {
      "default": "",
      "description": "Only keep projects posted on or after this date. ISO date or datetime, e.g. `2026-01-01` or `2026-01-01T12:00:00Z`.",
      "editor": "textfield",
      "prefill": "",
      "title": "Posted after",
      "type": "string"
    },
    "postedBefore": {
      "default": "",
      "description": "Only keep projects posted on or before this date. ISO date or datetime, e.g. `2026-12-31` or `2026-12-31T23:59:59Z`.",
      "editor": "textfield",
      "prefill": "",
      "title": "Posted before",
      "type": "string"
    },
    "projectType": {
      "default": "any",
      "description": "Keep fixed-price projects, hourly projects, or both.",
      "editor": "select",
      "enum": [
        "any",
        "fixed",
        "hourly"
      ],
      "enumTitles": [
        "Any type",
        "Fixed-price projects",
        "Hourly projects"
      ],
      "prefill": "any",
      "title": "Project type",
      "type": "string"
    },
    "projectUrls": {
      "default": [],
      "description": "Full Freelancer project URLs, paths or numeric project ids used in mode=byProject, e.g. https://www.freelancer.com/projects/python/my-project or 40425363.",
      "editor": "stringList",
      "prefill": [],
      "title": "Project URLs or ids",
      "type": "array"
    },
    "query": {
      "default": "python",
      "description": "Keyword used in mode=search, e.g. `python`, `logo design`, `data entry`. Required for search mode.",
      "editor": "textfield",
      "prefill": "python",
      "title": "Search keyword",
      "type": "string"
    },
    "skills": {
      "default": [],
      "description": "Skill names, slugs or numeric ids to narrow the search, e.g. `Python`, `website-design` or `13`.",
      "editor": "stringList",
      "prefill": [],
      "title": "Skills",
      "type": "array"
    },
    "sortBy": {
      "default": "latest",
      "description": "Order of search/category results. Ending-soon and budget sorts are applied to the collected candidate pool.",
      "editor": "select",
      "enum": [
        "latest",
        "ending_soon",
        "lowest_budget",
        "highest_budget",
        "lowest_bids",
        "highest_bids"
      ],
      "enumTitles": [
        "Newest first",
        "Ending soon",
        "Lowest budget first",
        "Highest budget first",
        "Lowest bid count first",
        "Highest bid count first"
      ],
      "prefill": "latest",
      "title": "Sort results",
      "type": "string"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Freelancer Project Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
projectsstringoptionalDataset containing Freelancer project records.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "One record per Freelancer.com project, with fixed or hourly budget, bid count and bid list, skills, employer rating and verification, dates and flags.",
  "properties": {
    "projects": {
      "description": "Dataset containing Freelancer project records.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Freelancer projects",
      "type": "string"
    }
  },
  "title": "Freelancer.com Project Budget & Bids Scraper Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Projects",
      "transformation": {
        "fields": [
          "title",
          "projectType",
          "budget",
          "hourlyRate",
          "bidCount",
          "canonicalUrl"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Freelancer.com Project Budget & Bids Scraper

Freelancer.com publishes project budgets, bid activity, skills and deadlines on every listing. This actor turns that into a structured dataset you can filter, sort and export. Search by keyword, browse a skill/category page, or paste project URLs and ids. It returns the budget in the project's own currency and in USD, the bid count, an optional full bid list with bidder details, the required skills, the employer's public rating and verification flags, and the posting and closing dates. No login, cookies or proxy setup is required.

What this actor does

  • Three ways to find projects: keyword search, category/skill browse, or direct project URL/id lookup. Auto-detect picks the right one from the fields you fill in.
  • Fixed and hourly projects: budgets stay separate, with native-currency and USD values on every record.
  • Real filters: project type, budget range, skills, languages, bid-count range and posting-date range.
  • Bid intelligence: bid count and average bid always; an optional full bid list with bidder username, country, amount, delivery period and proposal text.
  • Employer context: country, city, rating, review count, member-since date and payment/email/phone verification flags when the public project page publishes them.
  • Closed projects: search them with includeClosed, or fetch any closed project directly by URL or id.
  • Clean output: empty fields are omitted at every depth, so you never have to defend against null.

Output per project

  • projectId — Freelancer project id
  • title, pageTitle, slug — project title, page title and URL slug
  • sourceUrl, canonicalUrl — where the project was found and its canonical project URL
  • status, subStatus, frontendStatus — project status as published
  • projectType — fixed or hourly
  • budget — fixed-price budget display string, e.g. $250-750 USD
  • budgetMinMax — fixed budget as {min, max, currency}
  • budgetUsdMin, budgetUsdMax — fixed budget converted to USD
  • hourlyRate — hourly rate display string, e.g. $15-30 USD / hr
  • hourlyRateMinMax — hourly rate as {min, max, currency}
  • hourlyRateUsdMin, hourlyRateUsdMax — hourly rate converted to USD
  • currency, currencySymbol — project currency
  • paymentType — fixed-price or hourly label from the page
  • bidCount — number of bids received
  • averageBid — average bid in the project's currency
  • averageBidUsd — average bid converted to USD
  • bids — individual bids when includeBids is enabled: bidder id, username, display name, country, city, registration date, hourly rate, rating, review count, amount, currency, delivery period, proposal, submitted date, rank, milestone percentage and sealed flag
  • description — full project brief
  • skills — skill names attached to the project
  • skillSlugs, skillIds, categories — skill slugs, numeric ids and top-level categories
  • employer — public client details: country, country code, city, rating, review count, member-since date and verification flags
  • postedAt, updatedAt, endsAt, latestActivityAt — ISO 8601 dates
  • bidPeriodDays, daysLeft — bidding window and days remaining
  • postedText — relative posting text from the project page, when available
  • hourlyCommitmentHours, hourlyCommitmentInterval, hourlyDuration — hourly project commitment
  • isFeatured, isUrgent, isNda, isSealed, isNonpublic, isFulltime, isLocal, isProjectManagement, isRecruiter — project flags
  • projectCountry, projectCity — published project location, when available
  • marketplaceRating, marketplaceReviewCount, marketplaceDescription — marketplace rating block when the page carries it
  • recordType: "project", scrapedAt — record type and scrape timestamp

Input

Field Type Default Description
mode string auto auto, search, byProject or byCategory
query string python Keyword for mode=search
projectUrls array [] Project URLs, paths or numeric ids for mode=byProject
categoryUrls array [] /jobs/<skill>/ URLs or skill slugs for mode=byCategory
projectType string any any, fixed or hourly
budgetMin integer 0 Minimum fixed budget or hourly rate in USD; 0 = no minimum
budgetMax integer 0 Maximum fixed budget or hourly rate in USD; 0 = no maximum
minBidCount integer 0 Minimum number of bids; 0 = no minimum
maxBidCount integer 0 Maximum number of bids; 0 = no maximum
skills array [] Skill names, slugs or numeric ids
languages array [] ISO 639-1 language codes, e.g. en, de, hi
postedAfter string – ISO date/datetime lower bound on posting time
postedBefore string – ISO date/datetime upper bound on posting time
includeClosed boolean false Include closed projects in search/category results
includeDetails boolean true Fetch the public project page for employer details and page text. When off, a project URL is still resolved to its id, but page-only fields are omitted
includeBids boolean false Fetch individual bids
maxBidsPerProject integer 20 Maximum bids returned per project (1–1000)
sortBy string latest latest, ending_soon, lowest_budget, highest_budget, lowest_bids or highest_bids; ending-soon and budget sorts order the collected pool
maxPages integer 5 Maximum listing pages (99 projects per page)
maxItems integer 50 Hard cap on emitted projects (1–10000)

Example: keyword search with a fixed budget

{
  "mode": "search",
  "query": "python",
  "projectType": "fixed",
  "budgetMin": 250,
  "budgetMax": 1500,
  "languages": ["en"],
  "maxItems": 100
}

Example: hourly projects with low competition

{
  "mode": "search",
  "query": "react",
  "projectType": "hourly",
  "budgetMin": 20,
  "budgetMax": 80,
  "maxBidCount": 10,
  "sortBy": "lowest_bids",
  "maxItems": 50
}

Example: browse a skill page and include bids

{
  "mode": "byCategory",
  "categoryUrls": ["https://www.freelancer.com/jobs/logo-design/"],
  "includeBids": true,
  "maxBidsPerProject": 10,
  "maxItems": 25
}

Example: fetch specific projects, including a closed one

{
  "mode": "byProject",
  "projectUrls": [
    "https://www.freelancer.com/projects/python/cricket-prediction-rewards-bot",
    "40425363"
  ],
  "includeDetails": true,
  "includeBids": true,
  "maxBidsPerProject": 20
}

Use cases

  • Freelance demand monitoring — track project volume and budgets across skills and categories
  • Pricing research — compare fixed budgets and hourly rates across currencies in USD
  • Bid-competition analysis — find low-bid, high-budget projects and inspect who is bidding
  • Employer intelligence — see client country, rating, reviews and verification flags before bidding
  • Market and trend research — export project descriptions, skills and posting dates for analysis
  • Opportunity alerts — schedule keyword or category searches and filter by budget, bids and age

FAQ

Do I need a Freelancer.com account, cookies or a proxy? No. The actor reads public project data and runs without login, cookies or proxy setup. It chooses a working connection automatically.

Why is the employer missing from some records? Freelancer publishes the client's country, rating, reviews, member-since date and verification flags on many project pages, but not all. Closed-project pages in particular can be served in a reduced form without the client block. The actor returns the employer object when the public page carries it and omits it when it does not. The employer's username and hire rate are not public.

What does includeDetails change? The actor always reads the public project API for the title, budget, skills, dates and bid counts. includeDetails adds one project-page request for employer details, the page title and the relative posting text. When it is off, a project URL is still resolved to its project id, but those page-only fields are omitted.

How many bids can I get per project? bidCount and averageBid are always included. Set includeBids to true to get individual bids; maxBidsPerProject controls how many. Some projects hide their bid list from public view, so you may get the count without individual bids. Some bidders also leave the proposal text blank, so that field can be absent on an individual bid.

Why do some bids show an amount of 0? Freelancer hides the amount and proposal for sealed bids. Those bids carry sealed: true; the zero amount is the source's placeholder, not a real bid of zero. Visible bids keep their real amount.

Why don't closed projects appear first when includeClosed is on? The closed archive is much older and larger than the active listing, so a broad keyword returns matching active projects first and reaches closed ones only after several pages. Use a keyword or category that identifies the closed project, or pass its URL/id directly; direct project lookup always includes closed projects.

What is the difference between budget and hourlyRate? Fixed-price projects use budget; hourly projects use hourlyRate. For hourly projects the numbers are a rate per hour, not a total. projectType tells you which one applies.

Are budgets converted to USD? Yes. budgetMinMax and hourlyRateMinMax keep the project's own currency, while budgetUsdMin, budgetUsdMax, hourlyRateUsdMin, hourlyRateUsdMax and averageBidUsd are converted to USD. Filters use USD.

Can I search closed projects? Yes. Set includeClosed to true in search or category mode. Direct project URLs and ids work for closed projects without any extra setting.

Why do I get fewer rows than maxItems? A restrictive filter can run out of matches within maxPages. Increase maxPages or narrow the keyword/category. One keyword returns at most about 5,000 active projects.

Why are some fields missing from a record? The source does not publish every field for every project. Empty values are omitted instead of being sent as null, "" or []. This is normal for optional fields such as employer details, hourly commitment or marketplace rating.

How fresh is the data? Each run reads the live project listing. Bid counts and statuses can change quickly; scrapedAt records when the row was collected.

Is this affiliated with Freelancer.com? No. This is an independent, third-party actor that reads public Freelancer.com project data. It is not affiliated with or endorsed by Freelancer.com.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build bbzK5whhDLh1yi1Dc. Documentation is regenerated from the default published build; private drafts are not included.