{
  "openapi": "3.0.1",
  "info": {
    "title": "Freelancer.com Scraper - Projects, Budgets & Client Data",
    "description": "On Freelancer.com the client names a budget and freelancers bid against it, and the site publishes the bid count and the average bid. Every row carries those next to the budget in its own currency, marked fixed or hourly, plus skills, client country and rating. $0.45 per 1,000.",
    "version": "0.1",
    "x-build-id": "kXvwPkhJFcscb5Tzq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~freelancer-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-freelancer-com-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/dami_studio~freelancer-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-freelancer-com-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/dami_studio~freelancer-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-freelancer-com-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": {
          "searchQuery": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text search across active Freelancer.com projects, e.g. \"wordpress\", \"logo design\", \"python scraper\". Leave empty to take the newest projects across the whole site."
          },
          "skills": {
            "title": "Skills",
            "type": "array",
            "description": "Only return projects tagged with these Freelancer skills. Use the exact skill name shown on the site (\"PHP\", \"Logo Design\", \"Data Entry\"), its URL slug (\"web-design\") or its numeric skill id. This is a real server-side filter, so it is the cheapest way to narrow a search.",
            "items": {
              "type": "string"
            }
          },
          "projectType": {
            "title": "Project type",
            "enum": [
              "any",
              "fixed",
              "hourly"
            ],
            "type": "string",
            "description": "Fixed-price projects quote a total budget; hourly projects quote an hourly rate. Every row states which in its budgetType field."
          },
          "upgrades": {
            "title": "Only projects with these upgrades",
            "type": "array",
            "description": "Paid listing upgrades. These are rare — in a 994-project sample, featured 0.5%, sealed 0.5%, urgent 0.6%, NDA 0.4% — so selecting one will return very few rows.",
            "items": {
              "type": "string",
              "enum": [
                "featured",
                "sealed",
                "urgent",
                "NDA"
              ],
              "enumTitles": [
                "Featured",
                "Sealed bids",
                "Urgent",
                "NDA required"
              ]
            }
          },
          "maxItems": {
            "title": "Maximum projects",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on rows returned. You are charged only for rows you receive. Freelancer's own API stops paging at roughly 5,000 projects per search, so that is the practical ceiling for one run."
          },
          "includeClientDetails": {
            "title": "Include client (employer) details",
            "type": "boolean",
            "description": "Adds the client's country, city, star rating, review count, member-since date and verification flags. This costs one extra request per project, so a large run is slower with it on. Country is present on ~100% of projects; a star rating only on ~32%, because most Freelancer clients have no reviews yet."
          },
          "clientCountries": {
            "title": "Client country",
            "type": "array",
            "description": "Keep only projects whose client is in one of these countries. Accepts ISO codes (\"US\", \"GB\", \"AU\") or full names (\"United States\"). Filtered here, after the client lookup — Freelancer's own countries[] parameter is accepted by the API but does nothing. Dropped projects are never charged.",
            "items": {
              "type": "string"
            }
          },
          "minBudgetUsd": {
            "title": "Minimum budget (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only projects whose budget range reaches this amount. Compared in USD using the exchange rate Freelancer returns with each project, so an INR or GBP project is converted before comparison. Applied here rather than server-side, because Freelancer's max_avg_price parameter is a relevance hint, not a filter. Dropped projects are never charged."
          },
          "maxBudgetUsd": {
            "title": "Maximum budget (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only projects whose budget range starts at or below this amount, in USD."
          },
          "minBids": {
            "title": "Minimum bids",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only projects with at least this many bids."
          },
          "maxBids": {
            "title": "Maximum bids",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only projects with at most this many bids. Useful for finding fresh, low-competition work: set it to 5."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "bids"
            ],
            "type": "string",
            "description": "Newest first is Freelancer's default ordering. Most bids first surfaces the busiest projects."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Freelancer.com's public API answers the actor's own container address directly, so no proxy is needed or used by default. Set one only if you must exit from a specific network."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}