{
  "openapi": "3.0.1",
  "info": {
    "title": "Naukri.com Scraper - Jobs, Salaries & Companies",
    "description": "Scrape Naukri.com jobs by keyword or URL. Extract job title, company, skills, experience, salary, location and posting date, with optional full descriptions, education requirements and company details. Supports incremental monitoring and resume runs.",
    "version": "0.1",
    "x-build-id": "ajJ2ZcAtDX2TYgBJF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~naukri-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-naukri-com-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/abotapi~naukri-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-naukri-com-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/abotapi~naukri-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-naukri-com-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search mode walks the job results for your keywords. URL mode reads the pasted links instead: search pages are walked like a search, single job pages are read directly.",
            "default": "search"
          },
          "keywords": {
            "title": "Job keywords",
            "type": "array",
            "description": "Job search keywords, exactly as you would type them into the site's search box.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location (optional)",
            "type": "string",
            "description": "Optional city name applied to every keyword above, e.g. bangalore, mumbai, delhi ncr. Leave empty to search all India."
          },
          "urls": {
            "title": "Job or search page links",
            "type": "array",
            "description": "Links to read. In URL mode this list is used; in Search mode it is ignored.",
            "default": [
              "https://www.naukri.com/python-developer-jobs",
              "https://www.naukri.com/python-developer-jobs-in-bangalore",
              "https://www.naukri.com/jobs-in-bangalore",
              "https://www.naukri.com/it-jobs",
              "https://www.naukri.com/tata-technologies-jobs-careers-1218",
              "https://www.naukri.com/capgemini-jobs-careers-in-bengaluru-gid-1288",
              "https://www.naukri.com/capgemini-overview-1288",
              "https://www.naukri.com/job-listings-python-software-developer-capgemini-hyderabad-pune-bengaluru-6-to-11-years-240826007480"
            ],
            "items": {
              "type": "string"
            }
          },
          "jobIds": {
            "title": "Job ids (either mode)",
            "type": "array",
            "description": "Optional. Job ids (the 12-digit number at the end of a job page link) or job page links, read directly one job page each. Works in both modes, in addition to the keywords or links above.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Order of the results. Relevance is the site's default order; Date posted returns the newest jobs first.",
            "default": "relevance"
          },
          "experience": {
            "title": "Experience (years)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Only jobs open to a candidate with this many years of experience (0 = fresher). Leave empty for any experience."
          },
          "freshness": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "15",
              "30"
            ],
            "type": "string",
            "description": "Only jobs posted within this many days. A time window is a moving view, so incremental mode does not mark jobs that age out of it as EXPIRED.",
            "default": "any"
          },
          "workMode": {
            "title": "Work mode",
            "uniqueItems": true,
            "type": "array",
            "description": "Only jobs with any of these work arrangements. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "office",
                "remote",
                "hybrid",
                "temporary_wfh"
              ],
              "enumTitles": [
                "Work from office",
                "Remote",
                "Hybrid",
                "Temporary work from home"
              ]
            }
          },
          "salaryRange": {
            "title": "Salary range (INR per year)",
            "uniqueItems": true,
            "type": "array",
            "description": "Only jobs whose advertised salary falls in any of these bands. Jobs that hide their salary are not matched by this filter.",
            "items": {
              "type": "string",
              "enum": [
                "0to3",
                "3to6",
                "6to10",
                "10to15",
                "15to25",
                "25to50",
                "50to75",
                "75to100",
                "100to500"
              ],
              "enumTitles": [
                "0-3 Lakhs",
                "3-6 Lakhs",
                "6-10 Lakhs",
                "10-15 Lakhs",
                "15-25 Lakhs",
                "25-50 Lakhs",
                "50-75 Lakhs",
                "75-100 Lakhs",
                "1-5 Crore"
              ]
            }
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Only jobs in any of these cities, by name (e.g. Hyderabad, Bengaluru, Pune; Bangalore, Gurgaon and other older spellings work too) or numeric city id. Unlike Location above, this accepts several cities at once.",
            "items": {
              "type": "string"
            }
          },
          "department": {
            "title": "Department",
            "type": "array",
            "description": "Only jobs in any of these departments, by name as the site shows it (e.g. Engineering - Software & QA, Data Science & Analytics) or numeric id.",
            "items": {
              "type": "string"
            }
          },
          "roleCategory": {
            "title": "Role category",
            "type": "array",
            "description": "Only jobs in any of these role categories, by name (e.g. Software Development, Quality Assurance and Testing) or numeric id.",
            "items": {
              "type": "string"
            }
          },
          "industry": {
            "title": "Industry",
            "type": "array",
            "description": "Only jobs at employers in any of these industries, by name (e.g. IT Services & Consulting, Software Product) or numeric id.",
            "items": {
              "type": "string"
            }
          },
          "companyType": {
            "title": "Company type",
            "uniqueItems": true,
            "type": "array",
            "description": "Only jobs at any of these kinds of employer. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "foreign_mnc",
                "corporate",
                "indian_mnc",
                "startup",
                "govt_psu",
                "mnc",
                "others"
              ],
              "enumTitles": [
                "Foreign MNC",
                "Corporate",
                "Indian MNC",
                "Startup",
                "Govt/PSU",
                "MNC",
                "Others"
              ]
            }
          },
          "postedBy": {
            "title": "Posted by",
            "enum": [
              "any",
              "company",
              "consultant"
            ],
            "type": "string",
            "description": "Only jobs posted directly by the employer, or only jobs posted by a recruitment consultant.",
            "default": "any"
          },
          "topCompanies": {
            "title": "Companies",
            "type": "array",
            "description": "Only jobs at any of these companies, by name (e.g. Infosys, Accenture, Tata Consultancy Services) or numeric company group id. Names are matched against the companies the site lists for the search.",
            "items": {
              "type": "string"
            }
          },
          "walkInOnly": {
            "title": "Walk-in jobs only",
            "type": "boolean",
            "description": "Only jobs with a walk-in interview.",
            "default": false
          },
          "stipend": {
            "title": "Internship stipend (per month)",
            "uniqueItems": true,
            "type": "array",
            "description": "Internship searches only (e.g. keyword internship): only internships paying any of these monthly stipends (INR). Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "unpaid",
                "0to10k",
                "10to20k",
                "20to30k",
                "30to40k",
                "40to50k",
                "50k_plus"
              ],
              "enumTitles": [
                "Unpaid",
                "0-10k",
                "10k-20k",
                "20k-30k",
                "30k-40k",
                "40k-50k",
                "50k and above"
              ]
            }
          },
          "internshipDuration": {
            "title": "Internship duration",
            "uniqueItems": true,
            "type": "array",
            "description": "Internship searches only: only internships of any of these durations. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "flexible"
              ],
              "enumTitles": [
                "1 month",
                "2 months",
                "3 months",
                "4 months",
                "5 months",
                "6 months",
                "Flexible"
              ]
            }
          },
          "ugCourse": {
            "title": "Graduate (UG) qualification",
            "type": "array",
            "description": "Only jobs accepting any of these undergraduate qualifications, by name (e.g. B.Tech / B.E., B.Sc, Any Graduate) or numeric id.",
            "items": {
              "type": "string"
            }
          },
          "pgCourse": {
            "title": "Postgraduate (PG) qualification",
            "type": "array",
            "description": "Only jobs accepting any of these postgraduate qualifications, by name (e.g. MCA, M.Tech, MBA/PGDM) or numeric id.",
            "items": {
              "type": "string"
            }
          },
          "urlParams": {
            "title": "Extra site filter parameters (advanced)",
            "type": "array",
            "description": "Optional. Extra query parameters added as-is to every search page address, for a site filter not listed above (copy the key and value from the address of a filtered page on the site). Incremental mode does not mark jobs EXPIRED for a search that uses them.",
            "items": {
              "type": "object",
              "required": [
                "key",
                "value"
              ],
              "properties": {
                "key": {
                  "type": "string",
                  "title": "Key"
                },
                "value": {
                  "type": "string",
                  "title": "Value"
                }
              }
            }
          },
          "fetchDetails": {
            "title": "Fetch full job details",
            "type": "boolean",
            "description": "Read each job's own page for the full description, key skills, education, employment type, workplace label, industry, company details and view/apply counts. Off keeps the lighter search-card fields. On adds the per-job detail surcharge, charged once per record whose job page read succeeded.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum job records returned in total, across all keywords or links. 0 means unlimited (the run only stops when the results end).",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum result pages walked per keyword or search link. 0 (default) means no page limit, so Max items is the only cap that stops a run early.",
            "default": 0
          },
          "maxReviewsPerJob": {
            "title": "Max AmbitionBox reviews per job",
            "minimum": 0,
            "type": "integer",
            "description": "Each job's own page carries up to a handful of AmbitionBox employee-review snippets for that job's company (reviewer, rating, title, likes/dislikes, date, link), plus a salary insight and a benefits list, when the site serves them. Caps how many review snippets are kept per job (the site itself may serve fewer); 0 keeps none. Only applies when Fetch full job details is on. Reviews ride on their job row (see the Company reviews output view).",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "The job board is read through a browser session. The standard shared pool serves it; pick Apify residential (India) only if your runs are refused, it is billed per GB."
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue a large pull without returning items already collected there."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for daily or recurring monitoring. The first run returns every matching record as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED records. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each search, filter and URL setup; use State key to name or deliberately share a monitoring campaign. The days-ago age label shown on each card is excluded from change detection: the site re-renders it as time passes even when the posting date is unchanged, so a display flip alone never marks a job UPDATED.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the search and filter settings."
          },
          "emitUnchanged": {
            "title": "Emit unchanged records (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired records (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search; the source sometimes serves fewer results than it reports, and a run that could not see every matching job skips EXPIRED detection rather than guessing.",
            "default": false
          },
          "skipReposts": {
            "title": "Skip reposted jobs (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. In incremental mode every row carries isRepost: true when a NEW job id re-posts a job this monitoring campaign already tracked under another id (same title, employer and location; repostOfJobId names the earlier id). Turn this on to leave those reposts out of the results (they are not returned and not billed, but are still remembered).",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Output field names (or dotted paths like companyRating.aggregateRating) that should NOT make a record count as UPDATED. By default the posted-days-ago label, viewCount, applyCount, companyLogo, searchScope and the AmbitionBox rating/review count are already ignored, because they drift on their own without the posting itself changing. Add more field names here if changes to them are not relevant to you. Ignored fields are still returned in the output.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "MCP connectors",
            "type": "array",
            "description": "Connector IDs to export pushed records to when the run finishes."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page URL",
            "type": "string",
            "description": "When a Notion connector is used, the parent page the records are written under."
          },
          "maxNotifyListings": {
            "title": "Max records to export",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on records sent through the connectors above per run.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}