{
  "openapi": "3.0.1",
  "info": {
    "title": "Freelancer.com Scraper - Projects, Budgets & Client Data",
    "description": "Scrape open Freelancer.com projects. Each row has the budget in its own currency and in USD, marked fixed or hourly, the bid count and average bid, skills, the client's country, rating and verification flags, and the full description. $0.45 per 1,000 projects.",
    "version": "0.1",
    "x-build-id": "payhAavcrrkQE04BF"
  },
  "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, and not needed for a normal run. Freelancer.com’s public API answers without one. Supply your own proxy servers only if you want the traffic to leave through them."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}