{
  "openapi": "3.0.1",
  "info": {
    "title": "Target Jobs API + Report",
    "description": "Every open role at Target as structured JSON or CSV, at $1.50 per 1,000 jobs. No setup — press Start. Title, location, country, employment type, remote type, posted date and apply link, with change detection between runs and a white-label hiring report.",
    "version": "1.0",
    "x-build-id": "RCMltfrRwWuFdTQtm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apifmcpfactory~target-jobs-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apifmcpfactory-target-jobs-api",
        "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/apifmcpfactory~target-jobs-api/runs": {
      "post": {
        "operationId": "runs-sync-apifmcpfactory-target-jobs-api",
        "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/apifmcpfactory~target-jobs-api/run-sync": {
      "post": {
        "operationId": "run-sync-apifmcpfactory-target-jobs-api",
        "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": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Already set to Target's own careers board. You do not need to change this — press Start. It stays editable only so the same run can be pointed at another board on the same platform.",
            "items": {
              "type": "string"
            }
          },
          "dataPreset": {
            "title": "What to fetch",
            "enum": [
              "all-jobs",
              "new-only",
              "with-descriptions"
            ],
            "type": "string",
            "description": "All jobs is right for most uses. New only is for scheduled runs. With descriptions returns the advert body as well — see the note below before switching it on.",
            "default": "all-jobs"
          },
          "includeDescription": {
            "title": "Include the full job description",
            "type": "boolean",
            "description": "Off by default, and deliberately. A job advert is the employer's copyrighted text; the structured fields are not. Leaving it off means smaller payloads, faster runs and a cleaner licence position. Switch it on when your use needs the body text.",
            "default": false
          },
          "onlyNewSinceLastRun": {
            "title": "Only jobs that are new since the last run",
            "type": "boolean",
            "description": "For scheduled runs. The first run on a board always returns everything and stores the baseline; after that you get only what appeared since. Removed and edited postings are still reported in the summary and the report.",
            "default": false
          },
          "titleIncludes": {
            "title": "Job title contains any of",
            "type": "array",
            "description": "For example engineer, designer, product. Leave empty for every role.",
            "items": {
              "type": "string"
            }
          },
          "titleExcludes": {
            "title": "Job title does NOT contain",
            "type": "array",
            "description": "For example intern, contract. Applied after the include list.",
            "items": {
              "type": "string"
            }
          },
          "locationIncludes": {
            "title": "Location contains any of",
            "type": "array",
            "description": "For example Dublin, Germany, Remote.",
            "items": {
              "type": "string"
            }
          },
          "departmentIncludes": {
            "title": "Department or team contains any of",
            "type": "array",
            "description": "Only useful where Target publishes one — see the platform notes in the README.",
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Normalised across every platform in this family. A platform that does not publish one leaves it empty, and those jobs are excluded when you set a filter here.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "internship",
                "temporary",
                "volunteer"
              ]
            }
          },
          "remoteOnly": {
            "title": "Remote roles only",
            "type": "boolean",
            "description": "Uses the platform's own remote flag where there is one, and the location text where there is not.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Leave empty for all. Jobs with no published date are kept rather than silently dropped."
          },
          "maxJobs": {
            "title": "Most roles to return",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "This is the cost control, and it is set deliberately low. Target can have thousands of roles open, and at $0.0015 per role an uncapped run adds up fast — so a default run returns the newest 100 and costs about 0.15. Raise it when you want more, or set 0 for no cap at all.",
            "default": 100
          },
          "maxJobsPerCompany": {
            "title": "Most jobs per company",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Caps what each board can return, and therefore what it can cost. Leave empty for all of them."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "title",
              "company"
            ],
            "type": "string",
            "description": "Undated postings always sort last rather than pretending to be the oldest.",
            "default": "newest"
          },
          "generateReport": {
            "title": "Produce a hiring report",
            "type": "boolean",
            "description": "A client-ready review of the whole run: where the hiring is by department and location, what changed since the last run, and every open role in one table. Costs nothing extra.",
            "default": false
          },
          "reportFormat": {
            "title": "Report format",
            "enum": [
              "html",
              "pdf",
              "both"
            ],
            "type": "string",
            "description": "HTML opens in any browser and prints cleanly to A4. PDF is ready to send to a client.",
            "default": "both"
          },
          "reportCompanyName": {
            "title": "Your company name",
            "type": "string",
            "description": "Appears on the report. Setting this (or a logo) puts it in white-label mode and takes our name off."
          },
          "reportLogoUrl": {
            "title": "Your logo (web address)",
            "type": "string",
            "description": "A direct link to a PNG, JPG or SVG."
          },
          "reportAccentColor": {
            "title": "Accent colour",
            "type": "string",
            "description": "Hex colour used for headings, for example #1E3A8A.",
            "default": "#1E3A8A"
          },
          "reportFooterText": {
            "title": "Footer line",
            "type": "string",
            "description": "Appears at the bottom of every page — usually your company name or a client reference."
          },
          "exportFormat": {
            "title": "Also export as",
            "enum": [
              "none",
              "csv"
            ],
            "type": "string",
            "description": "The dataset is always JSON. This additionally writes flat comma-separated files you can open in a spreadsheet — the jobs, the boards, and what changed.",
            "default": "none"
          },
          "webhookUrl": {
            "title": "Webhook address",
            "type": "string",
            "description": "Called with a JSON summary when a board gains, loses or changes a posting. Nothing fires on the first run, because everything is new the first time and that is not news."
          },
          "userAgent": {
            "title": "Contact details sent with each request",
            "type": "string",
            "description": "Every request declares who is making it and how to reach them. The default identifies this actor. If you are running at volume, put your own company name and email here.",
            "default": "Howth Technology Factory jobs-api apifymcpfactory@gmail.com"
          },
          "requestsPerSecond": {
            "title": "Requests per second",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Shared across the whole run. The default is deliberately gentle: these are free public feeds and staying welcome on them matters more than finishing half a second sooner.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}