{
  "openapi": "3.0.1",
  "info": {
    "title": "India Jobs Feed: Internshala, Instahyre, CutShort, Apna, Shine",
    "description": "Pull India jobs from Internshala, Instahyre, CutShort, Apna, Shine, WorkIndia, Hirist and Wellfound (India roles) into one feed. Get only new, updated or closed jobs per run, flag cross-board duplicates, export JSONL or Adzuna-style XML. $0.00199 per row; 4 boards bill their own fee too.",
    "version": "1.6",
    "x-build-id": "cWFcdFe3c3t0ZYxdX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~india-job-inventory-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-india-job-inventory-feed",
        "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~india-job-inventory-feed/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-india-job-inventory-feed",
        "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~india-job-inventory-feed/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-india-job-inventory-feed",
        "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": {
          "sources": {
            "title": "Job Boards",
            "type": "array",
            "description": "Choose the job boards to search. Seven boards are India-based (Apna, CutShort, Internshala, Instahyre, Hirist, WorkIndia, Shine) and Wellfound is included for its India roles only. Apna, CutShort, Internshala and Instahyre each run as a separate Actor that bills its own per-result price to your account on top of this feed's price. Wellfound, Hirist, WorkIndia and Shine run inside this Actor and add no extra charge. WorkIndia is preselected; add Shine to include it (it is not preselected because Shine limits how fast its pages can be read). For a quick search by an AI agent, pass one or two boards, for example [\"workindia\", \"apna\"].",
            "items": {
              "type": "string",
              "enum": [
                "apna",
                "cutshort",
                "internshala",
                "instahyre",
                "wellfound",
                "hirist",
                "workindia",
                "shine"
              ],
              "enumTitles": [
                "Apna",
                "CutShort",
                "Internshala",
                "Instahyre",
                "Wellfound (India roles)",
                "Hirist",
                "WorkIndia",
                "Shine"
              ]
            },
            "default": [
              "apna",
              "cutshort",
              "internshala",
              "instahyre",
              "wellfound",
              "hirist",
              "workindia"
            ]
          },
          "keyword": {
            "title": "Job Title or Skill",
            "type": "string",
            "description": "Enter a job title, skill, or search term, such as software engineer or Python. Use one skill word on CutShort, which matches single skills only. Leave empty to return the latest jobs from each board.",
            "default": ""
          },
          "locations": {
            "title": "Cities or Regions",
            "type": "array",
            "description": "Add cities or regions such as Bengaluru or Pune, or leave this empty to use all available locations.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "companyNames": {
            "title": "Companies to Include",
            "maxItems": 20,
            "type": "array",
            "description": "Keep listings whose published company name contains any value you enter. Leave empty to include every company.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "excludeKeywords": {
            "title": "Words to Exclude",
            "maxItems": 20,
            "type": "array",
            "description": "Remove listings containing any value in the public title, company, location, skills, work arrangement, or description when details are included.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "remoteOnly": {
            "title": "Remote Jobs Only",
            "type": "boolean",
            "description": "Keep only listings that the job board explicitly marks as remote, work from home, WFH, or work from anywhere. Listings without that signal are excluded.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted Within (Days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days. Applies to WorkIndia and Shine, which publish a posting date on their ads; the other boards ignore it. Leave empty for no date limit."
          },
          "minMonthlySalary": {
            "title": "Minimum Monthly Salary",
            "minimum": 1,
            "maximum": 10000000,
            "type": "integer",
            "description": "Keep only jobs that state a monthly salary of at least this many rupees. Applies to WorkIndia only, which publishes pay per month; WorkIndia jobs with no stated monthly salary are left out when this is set. Other boards ignore it. Leave empty for no salary limit."
          },
          "internshalaMode": {
            "title": "Internshala Listing Type",
            "enum": [
              "jobs",
              "internships"
            ],
            "type": "string",
            "description": "Choose whether Internshala should return jobs or internships.",
            "default": "jobs"
          },
          "includeDetails": {
            "title": "Include Full Job Details",
            "type": "boolean",
            "description": "Include descriptions, skills, salary, and company information when published by the job board. Slower, and the child-Actor boards may charge more for detailed rows. WorkIndia and Shine always include the description.",
            "default": false
          },
          "outputMode": {
            "title": "What To Return",
            "enum": [
              "all",
              "changesOnly",
              "compact"
            ],
            "type": "string",
            "description": "Choose every matching listing, only listings that are new or changed since the previous run, or a compact result for AI agents: one short row per job (title, company, location, salary, url, source, lifecycle, clusterId) limited to 50 rows unless you set a total rows limit.",
            "default": "all"
          },
          "uniqueOnly": {
            "title": "One Row Per Job",
            "type": "boolean",
            "description": "When the same job (same title, company and city) appears more than once, on one board or several, return only the most complete row. Fewer rows means a lower feed bill. The match is a conservative text comparison, and every returned row still carries a clusterId. Compact mode already works this way.",
            "default": false
          },
          "maxTotalRows": {
            "title": "Total Rows Limit",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Optional limit on the total rows returned across all boards, shared evenly between the boards so one board cannot fill it. Compact mode returns 50 rows when this is empty. Every returned row is charged by this feed, so a lower value lowers the bill. Leave empty for no limit outside compact mode."
          },
          "monitorScope": {
            "title": "Monitor Scope",
            "type": "string",
            "description": "Optional name for this monitor's saved state, used to track new, updated and closed jobs between runs. Reuse the same name with the same boards, keyword, and locations on a schedule to compare against the previous run; use a different name for each independent monitor. Leave empty for a one-off or agent search; runs without a name never block each other.",
            "default": ""
          },
          "maxItemsPerSource": {
            "title": "Jobs Per Job Board",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum jobs to collect from each selected board. Each row is charged by this feed, and the four child-Actor boards also charge their own per-result price for the same rows, so a lower value lowers both bills. WorkIndia, Shine, Wellfound and Hirist run inside this Actor and add no second charge. Higher values take longer. For a quick agent search use 10 to 25.",
            "default": 25
          },
          "maxPagesPerSource": {
            "title": "Search Depth",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many result pages to check on supported boards. More pages can find more jobs and may take longer.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}