{
  "openapi": "3.0.1",
  "info": {
    "title": "CutShort Jobs Scraper: India Tech Jobs & Salaries",
    "description": "Collect public CutShort tech job listings in India with displayed and internal salary ranges, skills, role and remote data, optional company profiles and employer email discovery, plus recurring change detection you can schedule to return only new and updated roles.",
    "version": "1.5",
    "x-build-id": "fhBhzmeRacdI5J4A5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~cutshort-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-cutshort-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/getascraper~cutshort-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-cutshort-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/getascraper~cutshort-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-cutshort-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": {
          "skills": {
            "title": "Search skills or roles",
            "type": "array",
            "description": "Build CutShort public jobs URLs from these terms. Results from overlapping terms are combined and deduplicated.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Public CutShort job or jobs URLs",
            "type": "array",
            "description": "Public cutshort.io category/search pages and direct job URLs. URLs are combined with Skills.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "locations": {
            "title": "Location filters",
            "type": "array",
            "description": "Optional case-insensitive location text filters. A job is kept when any requested value occurs in a source location.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "roleTypes": {
            "title": "Role type filters",
            "type": "array",
            "description": "Optional exact CutShort role type values, such as full_time or internship. A job is kept when any value matches.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote-only jobs",
            "type": "boolean",
            "description": "Keep only records whose source remoteType is exactly remote_only.",
            "default": false
          },
          "postedWithinHours": {
            "title": "Posted within (hours)",
            "minimum": 1,
            "maximum": 8760,
            "type": "integer",
            "description": "Keep only jobs the source dated within this many hours. CutShort only publishes a posting date on individual job pages, not on search/category listings, so this only has an effect when Public CutShort job or jobs URLs includes direct /job/... URLs. Jobs without a source date are kept, not dropped, since a missing date is not evidence of staleness. Leave empty for no filter."
          },
          "includeCompanyDetails": {
            "title": "Include public company details",
            "type": "boolean",
            "description": "Include source-provided company identity, profile, size, stage, funding code, follower count, links, and tech stack where present.",
            "default": false
          },
          "includeRecruiter": {
            "title": "Include public job-poster metadata",
            "type": "boolean",
            "description": "Opt in to source-provided public poster ID, name, and profile image. No private contact details are collected.",
            "default": false
          },
          "includeDescriptionHtml": {
            "title": "Include HTML description",
            "type": "boolean",
            "description": "Include the source-provided sanitized HTML description. Plain descriptionText is included in full output.",
            "default": false
          },
          "outputMode": {
            "title": "Output detail",
            "enum": [
              "full",
              "summary",
              "urls_only"
            ],
            "type": "string",
            "description": "full returns all fields, summary returns core job fields and provenance, and urls_only returns identity, URLs, provenance, and monitoring metadata.",
            "default": "full"
          },
          "maxItems": {
            "title": "Maximum job listings",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum unique records emitted after deduplication and filters.",
            "default": 25
          },
          "enrichEmails": {
            "title": "Discover employer contact email",
            "type": "boolean",
            "description": "Optional add-on, off by default. For each returned company, this looks for a public contact email on the company's own website: the website listed on its CutShort company profile when there is one, otherwise a site found by a web search and checked against the company name. Contact and about pages are read too. CutShort itself never exposes a recruiter email, so any email found comes from the company's public website, not from CutShort. Turning this on also includes the company name in the output even when Include public company details is off, since the company name is needed for the lookup, and adds the company website next to each email found. Postings listed only under a generic placeholder name cannot be looked up. Increases run time.",
            "default": false
          },
          "monitoringMode": {
            "title": "Enable recurring change detection",
            "type": "boolean",
            "description": "Compare stable job content with the previous successful run for the same state name and source/filter scope.",
            "default": false
          },
          "includeUnchanged": {
            "title": "Include unchanged jobs",
            "type": "boolean",
            "description": "In monitoring mode, also emit records whose stable source content has not changed.",
            "default": false
          },
          "stateName": {
            "title": "Monitoring state name",
            "minLength": 1,
            "maxLength": 80,
            "type": "string",
            "description": "Stable namespace for a recurring monitor. Use a different value for each independent monitor.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional network proxy configuration.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}