{
  "openapi": "3.0.1",
  "info": {
    "title": "India & Fresher Jobs Scraper — Foundit, Instahyre, Internshala",
    "description": "Fresher and other jobs from Foundit, Instahyre, CutShort and Internshala in one run and one table: title, company, city or remote, salary or stipend as numbers when shown, skills, experience, posting date, full description. A job on two sites comes back once. Job alerts: only new since last run.",
    "version": "0.1",
    "x-build-id": "G0OktR1g5hktMWybZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/northbell~india-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-northbell-india-jobs-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/northbell~india-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-northbell-india-jobs-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/northbell~india-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-northbell-india-jobs-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": [
          "searches"
        ],
        "properties": {
          "searches": {
            "title": "Searches",
            "type": "array",
            "description": "One search per line — e.g. \"python\". Each line runs on every site you pick. Many searches in one run cost one start fee.",
            "items": {
              "type": "string"
            }
          },
          "boards": {
            "title": "Job sites",
            "type": "array",
            "description": "All by default. A job listed on two of them comes back once.",
            "items": {
              "type": "string",
              "enum": [
                "foundit",
                "instahyre",
                "cutshort",
                "internshala"
              ],
              "enumTitles": [
                "Foundit (formerly Monster India)",
                "Instahyre (tech, by skill)",
                "CutShort (tech and startups)",
                "Internshala (internships and fresher jobs)"
              ]
            },
            "default": [
              "foundit",
              "instahyre",
              "cutshort",
              "internshala"
            ]
          },
          "location": {
            "title": "Location (optional)",
            "type": "string",
            "description": "A city as Indian job sites write it, e.g. \"Bangalore\", \"Mumbai\", \"Pune\", or \"remote\". Leave empty for all of India. Instahyre has no location search, so there the city filters the returned jobs."
          },
          "postedWithinDays": {
            "title": "Posted within (days, optional)",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Only jobs posted in the last N days. Leave empty for all."
          },
          "output": {
            "title": "What to return",
            "enum": [
              "all",
              "new"
            ],
            "type": "string",
            "description": "Schedule this Actor daily and pick \"Only new\" to get a cheap new-jobs feed. The first run returns everything (there is nothing to compare with yet).",
            "default": "all"
          },
          "summaryRows": {
            "title": "Add a summary row per search",
            "type": "boolean",
            "description": "Adds one free row with type \"summary\" per search: status (ok / no-results / all-filtered / nothing-new / error), listed, read, returned, new, closed. Off by default so your job table stays clean; the same summary is always in the run status message and the OUTPUT record.",
            "default": false
          },
          "titleKeywords": {
            "title": "Title contains (optional)",
            "type": "string",
            "description": "Comma-separated. Keep jobs whose title contains any of these, e.g. \"senior, lead\"."
          },
          "locationKeywords": {
            "title": "Location contains (optional)",
            "type": "string",
            "description": "Comma-separated. Filters the returned jobs by their location text."
          },
          "experienceLevels": {
            "title": "Experience level (optional)",
            "type": "array",
            "description": "Keep only these levels, read from the job title (the same words on every northbell job scraper; each row also gets a seniority column). Product, account and other non-people \"managers\" count as mid level.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "entry",
                "mid",
                "senior",
                "lead",
                "manager",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Intern / apprentice",
                "Entry level / junior / new grad",
                "Mid level (no level word in the title)",
                "Senior",
                "Lead / staff / principal",
                "People manager",
                "Director / head of",
                "VP / C-level"
              ]
            }
          },
          "employmentTypes": {
            "title": "Employment type (optional)",
            "type": "array",
            "description": "Normalised from the site's own words (Vollzeit, CDI, Jornada completa, workload %, …) into the same five types on every site; each row also gets an employmentTypes column. Roles whose type is not stated are left out when you set this, and counted in OUTPUT.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Contract / freelance",
                "Temporary",
                "Internship"
              ]
            }
          },
          "withSalaryOnly": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Keep only jobs whose salary could be read as a number.",
            "default": false
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs the site marks as remote.",
            "default": false
          },
          "includeDescription": {
            "title": "Include the full description",
            "type": "boolean",
            "description": "The complete job text as plain text. One extra request per job returned (only the jobs you keep after filtering). Turn off for faster runs.",
            "default": true
          },
          "trackChanges": {
            "title": "Mark jobs that are new since the last run",
            "type": "boolean",
            "description": "Remembers which jobs each search returned, so the next run can mark new ones (and closed ones, when the whole search fits in Max jobs).",
            "default": true
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Caps what you pay for: $0.70 per 1,000 jobs. Newest first on Foundit.",
            "default": 200
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}