{
  "openapi": "3.0.1",
  "info": {
    "title": "freelancermap Projects Scraper",
    "description": "Scrape freelancermap IT freelance projects and contract jobs in Germany, Austria, Switzerland and abroad: title, company, skills, contract type, remote %, start, duration, workload, budget, location and full description. Filter by keyword or skill. Export the data to JSON, CSV or Excel, or via API.",
    "version": "1.0",
    "x-build-id": "jcyDYLSF6xi863V7n"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyscrape~freelancermap-projects-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyscrape-freelancermap-projects-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/steadyscrape~freelancermap-projects-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyscrape-freelancermap-projects-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/steadyscrape~freelancermap-projects-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyscrape-freelancermap-projects-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": {
          "sites": {
            "title": "freelancermap sites",
            "type": "array",
            "description": "Each site publishes its own projects: freelancermap.de the projects in Germany (about 12,700 open), .at in Austria (about 420), .ch in Switzerland (about 670) and the English .com the projects outside these three countries (about 900). The newest projects come first.",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "at",
                "ch",
                "com"
              ],
              "enumTitles": [
                "Germany (freelancermap.de)",
                "Austria (freelancermap.at)",
                "Switzerland (freelancermap.ch)",
                "International, outside DACH (freelancermap.com)"
              ]
            },
            "default": [
              "de"
            ]
          },
          "keywords": {
            "title": "Keywords or skills",
            "type": "array",
            "description": "Keep only projects that name at least one of these as a whole word or phrase, in German or English: <code>SAP</code>, <code>Java</code>, <code>Python</code>, <code>SAP S/4HANA</code>, <code>Projektleiter</code>, <code>Kubernetes</code>. The title and the project's skills are searched, and the description too unless switched off below. \"Java\" does not match \"JavaScript\"; case and accents do not matter. Leave empty for every project.",
            "items": {
              "type": "string"
            }
          },
          "searchInDescription": {
            "title": "Search the description too",
            "type": "boolean",
            "description": "Off: a keyword must be in the title or the skills, which leaves out projects that only mention it.",
            "default": true
          },
          "projectUrls": {
            "title": "Project links",
            "type": "array",
            "description": "Project pages to read as they are, such as <code>https://www.freelancermap.de/projekt/…</code> or <code>https://www.freelancermap.com/project/…</code>. Pasted alone, only these links are read; the filters below do not apply to them. Search pages are not taken: freelancermap shows visitors only their first page.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Keep only projects of these contract types. Empty keeps all.",
            "items": {
              "type": "string",
              "enum": [
                "contracting",
                "employee_leasing",
                "permanent_position"
              ],
              "enumTitles": [
                "Freelance / contract (Freiberuflich)",
                "Employee leasing (Arbeitnehmerüberlassung, ANÜ)",
                "Permanent position (Festanstellung)"
              ]
            },
            "default": []
          },
          "workplaces": {
            "title": "Workplace",
            "type": "array",
            "description": "freelancermap's own grouping of the remote share: Remote is 100 % remote, On site 0 %, Hybrid anything between. Empty keeps all.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "on_site"
              ],
              "enumTitles": [
                "Remote (100 %)",
                "Hybrid (partly on site)",
                "On site (0 % remote)"
              ]
            },
            "default": []
          },
          "minRemotePercent": {
            "title": "Minimum remote share (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Keep only projects that allow at least this share of remote work, e.g. <code>80</code>. 0 keeps all.",
            "default": 0
          },
          "locations": {
            "title": "Places",
            "type": "array",
            "description": "Keep only projects in one of these cities, regions or countries, in German or English: <code>München</code> or <code>Munich</code>, <code>Frankfurt</code>, <code>Wien</code>, <code>Zürich</code>, <code>Poland</code>. Remote projects name a place too, or the word Remote.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyEndCustomer": {
            "title": "Only end-client projects",
            "type": "boolean",
            "description": "Keep only projects posted by the end client itself (\"Endkundenprojekt\"), leaving out agencies and recruiters.",
            "default": false
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Keep only projects posted in the last days. A short window also makes the run faster: only the projects posted in it are read.",
            "default": "any"
          },
          "maxProjects": {
            "title": "Maximum projects",
            "minimum": 0,
            "type": "integer",
            "description": "How many projects to deliver, newest first. 0 means no maximum: every project the sites list (inside the date asked) is read.",
            "default": 100
          },
          "onlyNewProjects": {
            "title": "Only new projects (monitor)",
            "type": "boolean",
            "description": "For scheduled runs: skip projects an earlier run with the same sites and filters already delivered or left out, without reading them again. The memory lives in a key-value store named <code>steadyscrape-freelancermap-projects-state</code> in your account.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}