{
  "openapi": "3.0.1",
  "info": {
    "title": "Naukri Job Scraper",
    "description": "[💵 $1.50 / 1K · no start fee] Scrape Naukri.com and Naukrigulf jobs by keyword, location, URL or exact Naukri job ID. Clean company, salary, skills, experience, work mode and full descriptions.",
    "version": "0.1",
    "x-build-id": "YGSLqFnm8ThdSVxNz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/webdata_labs~naukri-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-webdata_labs-naukri-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/webdata_labs~naukri-scraper/runs": {
      "post": {
        "operationId": "runs-sync-webdata_labs-naukri-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/webdata_labs~naukri-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-webdata_labs-naukri-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": {
          "platform": {
            "title": "Job board",
            "enum": [
              "naukri",
              "naukrigulf",
              "both"
            ],
            "type": "string",
            "description": "Scrape Naukri.com (India), Naukrigulf.com (GCC), or run the same keyword and location combinations on both.",
            "default": "naukri"
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Job titles, skills or technologies to search for, exactly as you would type them into Naukri's search box (for example 'python developer' or 'chartered accountant'). Every keyword is combined with every location below, so 3 keywords x 2 cities runs 6 searches in one go.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword alias",
            "type": "string",
            "description": "Compatibility alias for searchQueries. Used only when searchQueries is empty."
          },
          "jobIds": {
            "title": "Exact Naukri job IDs",
            "type": "array",
            "description": "Refresh exact postings by their numeric Naukri job IDs. When set, search fields are ignored and full details are fetched.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Cities",
            "type": "array",
            "description": "Cities or countries to restrict the search to (for example bangalore, mumbai, dubai, riyadh, uae). Leave empty to search the selected platform broadly.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Or paste Naukri search URLs",
            "type": "array",
            "description": "Instead of building a search here, paste result-page URLs copied from naukri.com (for example https://www.naukri.com/python-developer-jobs-in-pune). Filters set in this input still apply on top, but anything in the URL wins.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URL alias",
            "type": "array",
            "description": "Compatibility alias for searchUrls. Accepts strings or Request objects with a url field.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 0,
            "type": "integer",
            "description": "How many jobs to return in total, shared across all searches. Set to 0 for every job Naukri will serve for your search (that can be tens of thousands, so raise the limit deliberately).",
            "default": 100
          },
          "includeJobDescription": {
            "title": "Fetch full job descriptions",
            "type": "boolean",
            "description": "Fetch each job's own page to add the complete description, education requirements, role, industry, employment type, and how many people have applied and viewed it. This costs one extra request per job, so a large run takes noticeably longer. Off by default; a short description snippet is always included either way.",
            "default": false
          },
          "experienceYears": {
            "title": "Years of experience",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Keep only jobs open to a candidate with this many years of experience. Naukri matches this against each job's experience range, so 5 returns jobs asking for 3-8 years as well as 5-10."
          },
          "companyId": {
            "title": "Company ID",
            "type": "array",
            "description": "Exact Naukri company taxonomy IDs, applied by Naukri's search API.",
            "items": {
              "type": "string"
            }
          },
          "industry": {
            "title": "Industry IDs",
            "type": "array",
            "description": "Naukri industryTypeIdGid taxonomy IDs.",
            "items": {
              "type": "string"
            }
          },
          "roleCategory": {
            "title": "Role category IDs",
            "type": "array",
            "description": "Naukri roleTypeGid taxonomy IDs.",
            "items": {
              "type": "string"
            }
          },
          "minSalaryLakhs": {
            "title": "Minimum salary (lakhs per year)",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Lowest annual CTC to accept, in lakhs of rupees (10 means 10,00,000 INR). Naukri filters by salary band, so the exact figure is re-checked on every row. Jobs where the recruiter hid the salary are kept - see 'Only jobs with a disclosed salary' to drop them."
          },
          "maxSalaryLakhs": {
            "title": "Maximum salary (lakhs per year)",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Highest annual CTC to accept, in lakhs of rupees. Useful for pay-band research; leave empty for no upper bound."
          },
          "onlyWithSalary": {
            "title": "Only jobs with a disclosed salary",
            "type": "boolean",
            "description": "Drop every job whose salary Naukri shows as 'Not disclosed'. Most Indian postings hide salary, so expect this to remove the large majority of rows.",
            "default": false
          },
          "workMode": {
            "title": "Work mode",
            "enum": [
              "any",
              "remote",
              "hybrid",
              "office"
            ],
            "type": "string",
            "description": "Restrict to remote, hybrid or on-site roles. 'Any' returns all three and still labels each row.",
            "default": "any"
          },
          "postedWithinDays": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "15",
              "30"
            ],
            "type": "string",
            "description": "Only return jobs posted in the last N days. Naukri supports these windows natively, so narrowing here makes the run faster as well as smaller.",
            "default": "any"
          },
          "employerType": {
            "title": "Posted by",
            "enum": [
              "any",
              "company",
              "consultancy"
            ],
            "type": "string",
            "description": "Company jobs are posted by the employer directly; consultancy jobs come from staffing agencies and are often duplicated across clients.",
            "default": "any"
          },
          "minCompanyRating": {
            "title": "Minimum company rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Drop employers rated below this on AmbitionBox (1-5). Companies with no rating at all are dropped too, since there is nothing to check."
          },
          "titleMustInclude": {
            "title": "Job title must include",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words. Case-insensitive. Use it to cut the loosely related roles Naukri's keyword search pulls in.",
            "items": {
              "type": "string"
            }
          },
          "titleMustExclude": {
            "title": "Job title must not include",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words. Case-insensitive. Handy for stripping out 'intern', 'trainee' or 'walk-in' postings.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Company names to skip entirely, matched exactly as Naukri writes them. Useful for filtering out your own employer or the staffing firms that flood a search.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Naukri's own ordering. 'Freshness' walks the newest postings first, which is what you want for a monitoring run; 'Relevance' matches what the website shows by default.",
            "default": "relevance"
          },
          "onlyNewJobs": {
            "title": "Only jobs not seen in previous runs",
            "type": "boolean",
            "description": "Remember every job id this Actor has returned and skip them next time, so a scheduled run gives you only what is genuinely new. State is kept in a named key-value store that survives between runs.",
            "default": false
          },
          "dedupStoreName": {
            "title": "Name of the memory store",
            "type": "string",
            "description": "Which named key-value store holds the 'already seen' job ids. Give each scheduled search its own name so they do not hide each other's results.",
            "default": "naukri-seen-jobs"
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "How many Naukri requests may be in flight at once. Higher is faster but more likely to be rate limited; the Actor slows itself down automatically when that happens.",
            "default": 10
          },
          "requestsPerSecond": {
            "title": "Request rate ceiling",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Upper bound on requests per second across the whole run. The Actor starts here, halves the rate whenever Naukri pushes back, and climbs again once responses are clean. Lower it if you see rate-limit warnings in the log.",
            "default": 5
          },
          "maxRequestRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times a failed request is retried, with exponential backoff and a fresh proxy IP each time, before the page is recorded as failed and the run moves on.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Naukri rate limits per IP address, so large runs need proxy rotation to finish. Apify Proxy is enabled by default and is rotated automatically during the run.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}