{
  "openapi": "3.0.1",
  "info": {
    "title": "Freelancermap Scraper",
    "description": "Scrape freelancermap.com - Europe's IT freelance marketplace. Search freelance IT projects and freelancer profiles by category, workplace type, and contract type; fetch full project or freelancer profile details by URL.",
    "version": "1.0",
    "x-build-id": "kNf5GMn36dbkRHI8c"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~freelancermap-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-freelancermap-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/crawlerbros~freelancermap-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-freelancermap-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/crawlerbros~freelancermap-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-freelancermap-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "projectSearch",
              "freelancerSearch",
              "projectDetail",
              "freelancerProfile"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "projectSearch"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text keyword search, e.g. a skill, technology, or job title (mode=projectSearch / freelancerSearch).",
            "default": ""
          },
          "category": {
            "title": "Category",
            "enum": [
              "",
              "web-and-software-development",
              "engineering",
              "graphic-design-and-creative-services",
              "management-and-consulting",
              "digital-marketing",
              "writing-and-translation-services",
              "finance-and-accounting",
              "research-and-analysis",
              "it-services"
            ],
            "type": "string",
            "description": "Restrict results to one of freelancermap's top-level categories (mode=projectSearch / freelancerSearch).",
            "default": ""
          },
          "remoteType": {
            "title": "Workplace type",
            "enum": [
              "",
              "onsite",
              "hybrid",
              "remote"
            ],
            "type": "string",
            "description": "Filter projects by remote/on-site workplace (mode=projectSearch).",
            "default": ""
          },
          "contractType": {
            "title": "Contract type",
            "enum": [
              "",
              "contracting",
              "permanent_position",
              "employee_leasing"
            ],
            "type": "string",
            "description": "Filter projects by contract type (mode=projectSearch).",
            "default": ""
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "newest",
              "relevant"
            ],
            "type": "string",
            "description": "Result ordering (mode=projectSearch / freelancerSearch).",
            "default": "newest"
          },
          "minDurationMonths": {
            "title": "Min. project duration (months)",
            "minimum": 0,
            "maximum": 120,
            "type": "integer",
            "description": "Drop projects whose listed duration is shorter than this many months (mode=projectSearch). Projects without a disclosed duration always pass through."
          },
          "technologySlug": {
            "title": "Skill / technology tag slug",
            "type": "string",
            "description": "Filter by a single freelancermap skill/technology tag, e.g. `python-programming-language`, `java-programming-language`, `sap-hana`, `amazon-web-services` (mode=projectSearch / freelancerSearch). Accepts a bare slug or a full `/projects/<slug>` or `/freelancer/<slug>` URL. Occupies the same URL slot as `category` on freelancermap — if both are set, this takes precedence.",
            "default": ""
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "Filter by a city name, e.g. `London`, `Berlin` (mode=projectSearch / freelancerSearch). Combine with `radiusKm` to widen the catchment area.",
            "default": ""
          },
          "radiusKm": {
            "title": "Radius around city (km)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Search radius in kilometres around `city` (mode=projectSearch / freelancerSearch). Has no effect unless `city` is also set."
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only include projects created within this many days (mode=projectSearch)."
          },
          "industry": {
            "title": "Industry",
            "enum": [
              "",
              "24",
              "1",
              "9",
              "7",
              "8",
              "2",
              "10",
              "14",
              "3",
              "22",
              "6",
              "12",
              "18",
              "21",
              "5",
              "11",
              "23"
            ],
            "type": "string",
            "description": "Restrict projects to a client industry, e.g. IT, Finance, Automotive (mode=projectSearch). Curated list of the most common industries freelancermap tracks.",
            "default": ""
          },
          "country": {
            "title": "Country",
            "enum": [
              "",
              "28",
              "29",
              "31",
              "32",
              "33",
              "2",
              "159",
              "36",
              "38",
              "39",
              "43",
              "150",
              "45",
              "46",
              "81",
              "49",
              "50",
              "86",
              "51",
              "87",
              "88",
              "147",
              "133",
              "52",
              "54",
              "173",
              "27",
              "55",
              "169",
              "56",
              "14",
              "58",
              "1",
              "165",
              "60",
              "12",
              "69",
              "70",
              "156",
              "72",
              "74",
              "8",
              "77",
              "82",
              "84",
              "197",
              "90",
              "93",
              "94",
              "95",
              "96",
              "99",
              "153",
              "98",
              "104",
              "106",
              "189",
              "152",
              "107",
              "110",
              "184",
              "111",
              "112",
              "113",
              "114",
              "115",
              "117",
              "6",
              "119",
              "149",
              "124",
              "15",
              "126",
              "129",
              "7",
              "128",
              "120",
              "3",
              "158",
              "131",
              "134",
              "135",
              "5",
              "11",
              "143",
              "4",
              "139",
              "141",
              "142",
              "151"
            ],
            "type": "string",
            "description": "Restrict results to freelancers or projects based in this country (mode=projectSearch / freelancerSearch). Curated list of the most common countries freelancermap tracks (90 of 158+ observed) — a more precise alternative to `city`, which freelancermap's own endpoint doesn't reliably honor.",
            "default": ""
          },
          "endClientOnly": {
            "title": "Direct end-client projects only",
            "type": "boolean",
            "description": "Only include projects posted directly by the end client (excludes projects reposted by an agency/reseller) (mode=projectSearch).",
            "default": false
          },
          "includeDachRegion": {
            "title": "Include Germany/Austria/Switzerland (DACH) listings",
            "type": "boolean",
            "description": "freelancermap shows a smaller 'international' subset by default; enable this to include the much larger pool of Germany/Austria/Switzerland-region projects or freelancers too (mode=projectSearch / freelancerSearch).",
            "default": false
          },
          "maxHourlyRate": {
            "title": "Max. hourly rate",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Only include freelancers whose quoted hourly rate is at or below this value, in their local currency (mode=freelancerSearch)."
          },
          "updatedWithinDays": {
            "title": "Profile updated within (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only include freelancer profiles updated within this many days (mode=freelancerSearch)."
          },
          "language": {
            "title": "Spoken language",
            "enum": [
              "",
              "35",
              "33",
              "1",
              "30",
              "41",
              "40",
              "2",
              "3",
              "32",
              "23",
              "4",
              "13",
              "7",
              "6",
              "8",
              "37",
              "5",
              "9",
              "27",
              "10",
              "26",
              "11",
              "12",
              "39",
              "36",
              "28",
              "29",
              "14",
              "15",
              "16",
              "17",
              "18",
              "19",
              "31",
              "34",
              "21",
              "43",
              "22",
              "20",
              "38",
              "42",
              "24",
              "25"
            ],
            "type": "string",
            "description": "Only include freelancers who list this spoken language on their profile (mode=freelancerSearch).",
            "default": ""
          },
          "maxDailyRate": {
            "title": "Max. daily rate",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Only include freelancers whose quoted daily rate is at or below this value, in their local currency (mode=freelancerSearch)."
          },
          "requireDisplayedName": {
            "title": "Only freelancers with a public name",
            "type": "boolean",
            "description": "Some freelancer cards only show a headline (no name) until the freelancer opts in to display it. Enable to skip those (mode=freelancerSearch).",
            "default": false
          },
          "hasAttachmentsOnly": {
            "title": "Only profiles with a portfolio/attachment",
            "type": "boolean",
            "description": "Only include freelancers who have uploaded a portfolio file or attachment to their profile (mode=freelancerSearch).",
            "default": false
          },
          "openToPermanentJobs": {
            "title": "Only freelancers open to permanent positions",
            "type": "boolean",
            "description": "Only include freelancers who have indicated they're open to permanent-position offers, not just freelance contracts (mode=freelancerSearch).",
            "default": false
          },
          "openToAgencyContract": {
            "title": "Only freelancers open to agency/employee-leasing contracts",
            "type": "boolean",
            "description": "Only include freelancers who have indicated they're open to agency/employee-leasing contracts (mode=freelancerSearch).",
            "default": false
          },
          "excludeUnavailable": {
            "title": "Exclude fully unavailable freelancers",
            "type": "boolean",
            "description": "Drop freelancers who have marked themselves fully unavailable (mode=freelancerSearch).",
            "default": false
          },
          "recentlyActiveOnly": {
            "title": "Only recently active profiles",
            "type": "boolean",
            "description": "Only include freelancers with the most recently updated/active profiles (mode=freelancerSearch).",
            "default": false
          },
          "minAvailabilityPercent": {
            "title": "Min. availability (%)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Only include freelancers whose self-reported availability is at least this percentage (e.g. 100 = fully available, 50 = at least partially available) (mode=freelancerSearch)."
          },
          "projectSlugsOrUrls": {
            "title": "Project URLs or slugs (mode=projectDetail)",
            "type": "array",
            "description": "Full project URLs (e.g. `https://www.freelancermap.com/project/aws-data-engineer-...`) or bare slugs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "profileSlugsOrUrls": {
            "title": "Freelancer profile URLs or slugs (mode=freelancerProfile)",
            "type": "array",
            "description": "Full profile URLs (e.g. `https://www.freelancermap.com/profile/ryan-devlin`) or bare slugs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minExperienceYears": {
            "title": "Min. years of experience",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Drop freelancer profiles with fewer years of experience than this (mode=freelancerProfile). Profiles that don't disclose experience always pass through."
          },
          "availableOnly": {
            "title": "Only currently available freelancers",
            "type": "boolean",
            "description": "Only emit freelancer profiles marked fully available (mode=freelancerProfile).",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Hard cap on emitted records. Note: freelancermap.com only exposes a single results page (roughly 18-22 records) to anonymous visitors per unique search/filter combination for the browse modes — narrow your filters to reach different result pools.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}