{
  "openapi": "3.0.1",
  "info": {
    "title": "Instahyre Jobs Scraper: India Tech Jobs & Hiring Monitor",
    "description": "Search and monitor Instahyre public India tech jobs by function, skill, location, company size, and job type. Optional enrichment adds descriptions, experience ranges, and employer email lookup. Change tracking flags new, updated, and removed listings. Export to JSON, CSV, or Excel. $0.001/job.",
    "version": "0.2",
    "x-build-id": "gUx7tdoAkCv14gEEH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~instahyre-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-instahyre-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/getascraper~instahyre-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-instahyre-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/getascraper~instahyre-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-instahyre-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",
        "properties": {
          "jobFunctionSlugs": {
            "title": "Job functions",
            "maxItems": 5,
            "type": "array",
            "description": "Optional live Instahyre function slugs such as backend-development, data-science-machine-learning, or frontend-development. Leave empty to search the complete public feed.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": [
              "backend-development"
            ]
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "full_time",
              "internship"
            ],
            "type": "string",
            "description": "Filter by the type exposed in Instahyre's public feed.",
            "default": "any"
          },
          "companySize": {
            "title": "Company size",
            "enum": [
              "any",
              "small",
              "medium",
              "large"
            ],
            "type": "string",
            "description": "Instahyre company-size groups: small, medium, or large.",
            "default": "any"
          },
          "skills": {
            "title": "Skills",
            "maxItems": 10,
            "type": "array",
            "description": "Optional skills matched against Instahyre's public jobs, for example Java, Python, SQL, or React.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "skillMatch": {
            "title": "Skill matching",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "Any keeps a row when one requested skill matches; all requires every requested skill to match.",
            "default": "any"
          },
          "keywords": {
            "title": "Title or job keywords",
            "maxItems": 10,
            "type": "array",
            "description": "Optional keywords matched against the title, candidate title, skills, company context, and locations.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "keywordMatch": {
            "title": "Keyword matching",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "Any returns a row when one keyword matches; all requires every keyword to match.",
            "default": "any"
          },
          "locations": {
            "title": "Locations",
            "maxItems": 10,
            "type": "array",
            "description": "Optional location terms matched against Instahyre's public labels, such as Bangalore, Pune, or Gurgaon.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "remoteOnly": {
            "title": "Remote roles only",
            "type": "boolean",
            "description": "Keep roles whose public location label explicitly indicates remote, work from home, WFH, or work from anywhere.",
            "default": false
          },
          "companyNames": {
            "title": "Companies to include",
            "maxItems": 10,
            "type": "array",
            "description": "Optional company-name filter. Tries an exact Instahyre company-name match first (fast, one request); if that name is not recognized exactly, results fall back to a broader case-insensitive partial match across scanned pages.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 10,
            "type": "array",
            "description": "Skip rows containing any of these terms in their public title, skills, company context, or location.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "includeDetails": {
            "title": "Fetch job details",
            "type": "boolean",
            "description": "Fetch the public detail record for each returned job to add description, experience range, job category, and job functions. Failed detail requests keep the list row.",
            "default": false
          },
          "enrichEmails": {
            "title": "Discover employer contact email",
            "type": "boolean",
            "description": "Optional add-on. For each row, this searches for the hiring company's own website, checks that the site actually matches the company name, then looks for a contact email on it (mailto links, contact/about pages). Instahyre itself never exposes a recruiter email, so any email found comes from the company's public website, not from Instahyre. Billed only on rows where an email is actually found. Increases run time and is not guaranteed to find an email for every company.",
            "default": false
          },
          "monitorMode": {
            "title": "Output mode",
            "enum": [
              "snapshot",
              "changes_only"
            ],
            "type": "string",
            "description": "Snapshot returns the current matching rows. Changes only compares a named filter state and returns new, updated, unchanged when enabled, and safely removed rows.",
            "default": "snapshot"
          },
          "emitBaseline": {
            "title": "Emit baseline on first monitoring run",
            "type": "boolean",
            "description": "When changes_only is selected, emit the first complete baseline as NEW rows. Turn off to seed state without output.",
            "default": true
          },
          "includeUnchanged": {
            "title": "Include unchanged rows",
            "type": "boolean",
            "description": "Include rows whose public fields did not change in a monitoring run. Disabled by default to keep recurring runs small.",
            "default": false
          },
          "stateName": {
            "title": "Monitoring state name",
            "type": "string",
            "description": "Optional stable name for the saved comparison state. Separate names keep different searches isolated.",
            "default": ""
          },
          "maxItems": {
            "title": "Maximum jobs returned",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum rows written to the dataset. The Actor may scan additional pages to satisfy local filters or monitoring safety.",
            "default": 50
          },
          "maxPages": {
            "title": "Maximum source pages",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Safety cap on public API pages scanned. One page contains up to 20 jobs. A capped scan never marks missing jobs as removed. Raised from the original default so a typical filtered search reaches the end of its matches in one run.",
            "default": 10
          },
          "excludeAgencyPosted": {
            "title": "Exclude agency-posted jobs",
            "type": "boolean",
            "description": "Skip jobs posted by a staffing agency rather than the hiring company directly. Requires \"Fetch job details\" to be enabled, since agency-vs-direct status is only known from the job detail page.",
            "default": false
          },
          "diversityEmployersOnly": {
            "title": "Diversity employers only",
            "type": "boolean",
            "description": "Keep only jobs from employers Instahyre flags with a diversity-hiring badge.",
            "default": false
          },
          "trackCompanies": {
            "title": "Track companies (hiring tracker mode)",
            "maxItems": 50,
            "type": "array",
            "description": "Exact Instahyre company names to track as a hiring profile instead of searching jobs. When this is non-empty, the Actor switches entirely to tracker mode: one row per company with open-role count, function and location mix, and (from the second scheduled run onward) deltas since the last run. Use exact names as Instahyre shows them, for example from a MARKET_SNAPSHOT's topCompanies. All other search filters above are ignored in this mode.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy configuration for the main search and tracker requests. Datacenter proxy (the default) rotates the exit IP per request, which keeps the Actor working through occasional anti-bot challenges.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}