Apna (apna.co) jobs with salaries as JSON API
Apna Jobs Scraper is a pay-per-record Apify Actor by Daemon Data that returns Apna (apna.co) India jobs with salary, locality, department, work mode and full descriptions; full-board export as JSON, CSV or Excel. It costs $0.0008 per job with the default options ($0.80 per 1,000); no login to the source site, no proxy, no browser, and the same input runs from the Apify console, one REST call, Python, Node.js, n8n or an AI assistant through MCP.
Daemon Data Apna Jobs Scraper on Apify Listing as plain text
Checked on 26 Oct 2026
Delhi-NCR 4,940 open jobs, Bengaluru 3,650, Mumbai 3,400, Hyderabad 1,770, Pune 1,770. By department: Sales & BD 12,540, Banking / Insurance / Financial Services 9,930, Delivery / Driver / Logistics 4,410, Software Engineering 4,280, Finance & Accounting 4,010. There were 8,930 field jobs and 2,960 part-time jobs.
Who uses it, for what
| You are | What you get |
|---|---|
| Job aggregators and job-alert apps | Apna as a source: stable ids, salary, locality, department, full description and a board-wide daily feed (All jobs + Last 24 hours + only-new). Same conventions as the IIMJobs, Hirist, Foundit, Instahyre and Unstop Actors by the same publisher. |
| Staffing agencies and recruiters | Who is hiring telecallers, delivery riders or field sales staff in your city this week, at what salary, with how many openings. |
| Labour-market and salary analysts | Entry-level and frontline salaries by city, department and role, the share of field and night-shift jobs, demand trends by locality. |
| B2B sales and lead generation | A company posting 20 delivery openings in Pune is expanding there. Each row has the company name and Apna organisation id. |
| HR-tech, skilling and government programmes | Which jobs ask for ITI, a diploma or 12th pass, and the English level required, by district. |
| AI agents (MCP) | Ask Claude or ChatGPT "new telecaller jobs in Jaipur posted today with salary" and let it call this Actor through Apify's MCP server. |
Output fields
The most useful top-level fields with values from a real record; the full list is id, url, title, company, companyId, companyLogo, department, category, role, city, state, area, pincode, latitude, longitude, locationText, workMode, employmentType, shift, salaryMin, salaryMax, salaryCurrency, salaryPeriod, earningPotential, incentives, experienceMinYears, experienceMaxYears, experienceText, education, englishLevel, openings, tags, isExternalJob, externalApplyUrl, postedAt, updatedAt, expiresAt, description, searchTerm, scrapedAt. Per-field notes and the OpenAPI definition are on the Apify API page.
| Field | Type | Example |
|---|---|---|
id | number | 149578990 |
url | string | "https://apna.co/job/kolkata-calcutta/recruiter-general-staffing-14... |
title | string | "Recruiter (General Staffing )" |
company | string | "2Coms Consulting Pvt Ltd." |
companyId | number | 405182 |
department | string | "Human Resources" |
category | string | "Human Resource" |
role | string | "Senior Recruiter" |
city | string | "Kolkata" |
state | string | "West Bengal" |
area | string | "Kolkata" |
pincode | string | "700073" |
latitude | number | 22.5743545 |
longitude | number | 88.3628734 |
locationText | string | "All areas in Kolkata/Calcutta Region" |
Input and how to call it
A verified example input (it returned data on 2026-10-26):
{
"cities": [
"Pune"
],
"departments": [
"Delivery / Driver / Logistics"
],
"postedWithin": "7d",
"maxJobsPerSearch": 50
}
One HTTP call starts a run, waits for it and returns the records (token from console.apify.com):
curl -X POST "https://api.apify.com/v2/acts/data_daemon~apna-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"cities": ["Pune"], "departments": ["Delivery / Driver / Logistics"], "postedWithin": "7d", "maxJobsPerSearch": 50}'
Python: ApifyClient(token).actor("data_daemon/apna-jobs-scraper").call(run_input=...), full file python/apna-jobs-scraper.py. Node.js: node/apna-jobs-scraper.mjs. n8n: importable workflow.
AI assistant (MCP): add the remote server https://mcp.apify.com/?tools=data_daemon/apna-jobs-scraper with header Authorization: Bearer YOUR_APIFY_TOKEN in Claude, ChatGPT, Cursor or VS Code and ask for the data in plain words.
All input fields
| Field | Type | Meaning |
|---|---|---|
searchTerms | array | Job titles or skills, e.g. telecaller, delivery boy, accountant, python developer, driver. One Apna search per keyword; Apna returns at most 500 jobs per keyword. Leave empty for the latest jobs, filtered by city, department and the options below. |
allJobs | boolean | Ignore the keywords and export every open Apna job, department by department (about 71,000 of the 76,800 open jobs on 26 Oct 2026 carry a department). Combine with Only new jobs since the last run for a daily feed, or with cities / departments to export a slice. Large: set a maximum cost per run. |
cities | array | City names, e.g. Mumbai, Delhi, Bangalore, Hyderabad, Pune, Chennai, Kolkata, Ahmedabad, Jaipur, Lucknow. Apna filters by 74 cities; Delhi, Gurgaon, Noida and Ghaziabad all map to Delhi-NCR. Other place names are matched against each job's location. remote means work from home. |
departments | array | Apna departments, e.g. Sales & BD, Customer Support, Delivery / Driver / Logistics, Software Engineering, Finance & Accounting, Healthcare / Doctor / Hospital Staff, Banking / Insurance / Financial Services. A word such as sales, delivery or healthcare picks the matching department. Applies to runs without keywords. |
workModes | array | Only jobs with these work modes. Empty = any. |
workType | string | Only full-time or only part-time jobs. |
shift | string | Only day-shift or only night-shift jobs. |
education | string | Jobs open to candidates with this highest education, as Apna filters them. |
englishLevel | string | Jobs open to candidates with this English level, as Apna filters them. |
postedWithin | string | Only jobs posted recently (Apna's own windows). Last 24 hours with All jobs is a daily board-wide feed of about 950 new jobs. |
includeDescription | boolean | Full job description as plain text. Keyword searches fetch each job page for it (slower); the feed already carries it. Price is the same either way. |
maxJobsPerSearch | integer | Cap for each keyword (or each city / department listing). 0 = no cap. Not used with All jobs. |
maxJobs | integer | Stop after this many saved jobs. 0 or empty = no total cap (the run's maximum cost still applies). |
onlyNewSinceLastRun | boolean | For schedules: remember delivered job ids (in a named key-value store in your account) and save only jobs that earlier runs with the same settings did not deliver. Skipped jobs are not charged. |
stateName | string | Name of the only-new memory. Empty = derived from the keywords and filters. Give two schedules the same name to share one memory. |
skipJobIds | array | Apna job ids you already have (the id field). They are neither saved nor charged. |
Price
$0.0008 per job ($0.80 per 1,000); $0.001 per run. List prices for Apify Free and Starter plans; Scale and Business plans pay 15% to 30% less.
| Event | Price | Per 1,000 | Charged when |
|---|---|---|---|
| Job | $0.0008 | $0.80 | One Apna job saved to the dataset: id, URL, title, company, department, role, city, area, PIN code, coordinates, work mode, shift, salary range and earning potential, experience, education and English level asked for, openings, tags, dates and the full description. Skipped or filtered jobs are never charged. |
| Actor Start | $0.001 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
Worked example: the input above, capped at 50 jobs, costs at most $0.041. Apify's free plan includes $5 of usage a month, about 6,250 jobs; the Actor's own compute is included in the per-record price, and records skipped by filters, de-duplication or only-new mode are not charged.
Questions buyers ask
Is there an official Apna API?
Not a public one. This Actor reads the public JSON job feed and job pages that the apna.co website loads. It exposes them as a REST API with schedules, webhooks and only-new runs.
Does it return candidates or recruiter contacts?
No. It returns job listings only: no candidate data, and no recruiter names, phone numbers or e-mail addresses.
Why do some jobs have no salary?
The employer did not disclose it, or the job is an external listing applied for on the employer's own career site.
Do I need a proxy or login?
No.
Alternatives, honestly
| Option | What it gives you | Where it falls short for this job |
|---|---|---|
| Apna website and app | Search and apply as a candidate | No export or API; one job at a time |
| Other Apna Actors on Apify Store | Same board | Compare full-board coverage, salary and locality fields, only-new mode and price per 1,000 |
| Build your own scraper | Full control | You handle the 500-result keyword cap, deep-page repeats, city ids and de-duplication |