Apna Jobs Scraper — Salary, Shift & Contact avatar

Apna Jobs Scraper — Salary, Shift & Contact

Pricing

from $0.80 / 1,000 job scrapeds

Go to Apify Store
Apna Jobs Scraper — Salary, Shift & Contact

Apna Jobs Scraper — Salary, Shift & Contact

Scrape apna.co jobs — title, employer, salary, shift, department, education, English level, applicant counts. Category and city search. No login.

Pricing

from $0.80 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Apna Jobs Scraper — India Jobs, Salary, Shift & Employer Contact

Scrape job postings from apna.co, India's largest entry-level and blue/grey-collar job board — no login, no cookies, no proxy, no browser. Pick categories and cities, or paste listing / job URLs, and get back 35 structured fields per job: employer, full postal address with pincode, salary band, shift, department and role category, and the screening requirements apna asks for that most job feeds throw away — education, English level, experience and stated gender preference — plus how many people have already applied. Schedule it and only new jobs are billed.

Why Use This Scraper?

  • Screening fields, not just listings. education, englishLevel, experienceRequired and shift are what actually decide whether a candidate can take the job. They live in apna's own panels, not in the schema.org block, and they are read here by anchoring on the visible labels.
  • Full postal address, including pincode. address, location, region and postalCode come straight from apna's structured data — enough to map or route on.
  • Live competition signal. applicantCount shows how many people have already applied to that exact posting.
  • Real coverage. 58 categories × 42 verified cities. apna claims 95,000+ live postings.
  • The city names people actually type. Bangalore, Delhi and Gurgaon all fail on apna's own URLs; this actor maps them to the slugs that work.
  • No proxy needed. apna answers a direct request, so runs are fast and you are not burning proxy budget.
  • Only-new monitoring. Flip monitorMode on a schedule and already-delivered job IDs are skipped — not fetched, not billed. Name each watch with monitorStateName if you run more than one.

Overview

apna.co is where most of India's non-white-collar hiring happens: delivery, retail, back office, field sales, telecalling, security, beauty, driving, plus entry-level roles filtered by 10th/12th pass.

This actor walks apna's category landing pages (/jobs/{category}-jobs, optionally narrowed to a city), harvests the posting URLs, then reads each posting's own page — where apna publishes a complete schema.org JobPosting block alongside the panels that carry the screening requirements.

Listing cards are deliberately not parsed: apna's markup is emotion-generated and its class names change on every deploy, while the detail page's structured data is a published contract.

Supported Inputs

Input typePatternExample
Categoryapna's category slugback-office, delivery-person, telecalling-bpo
Citycommon name or apna slugMumbai, Bangalore, Delhi, bengaluru
Listing URLhttps://apna.co/jobs/{category}-jobs[-in-{city}]https://apna.co/jobs/back-office-jobs-in-mumbai
Direct job URLhttps://apna.co/job/{city}/{slug}-{id}https://apna.co/job/thane/back-office-coordinator-525613186

Use Cases

  • Blue/grey-collar recruitment intelligence — who is hiring, for what shift, at what pay, in which pincode.
  • Wage benchmarking — salary bands by category and city across thousands of live postings.
  • Staffing and gig-platform sourcing — find employers hiring at volume in a specific area.
  • Labour-market research — education and English-level requirements by role and region.
  • Job aggregation — feed a candidate-facing app with fresh postings by category and city.

How It Works

How the Apna jobs scraper works

  1. Input — pick categories and cities, paste listing or job URLs, or leave filters empty for apna's whole board
  2. Resolve — city names are mapped to the slugs apna serves; unknown values are reported rather than silently ignored
  3. Walk listings — pages ?page=N at 25 postings per page, cycling between your category/city pairs a page at a time so no single one uses up the item budget
  4. Read each posting — the detail page's JobPosting structured data plus the label-anchored requirement panels
  5. Filter / monitor — optional keyword and posted-within windows; already-seen IDs are skipped when monitoring is on
  6. Output — one row per posting, as JSON or CSV

Input Configuration

FieldTypeRequiredNotes
categoriesstring[]noapna category slugs. Empty = all 58 categories.
citiesstring[]noEmpty = all-India. Common names are mapped (Bangalorebengaluru, Delhinew-delhi, Gurgaongurgaon-gurugram).
startUrlsstring[]noJob URLs and/or listing URLs (/jobs/{category}-jobs[-in-{city}]). URLs alone do not walk the rest of the board.
keywordstringnoKeep rows whose title or company contains this text. apna has no keyword search, so this is applied after the detail page is read.
dateWithinDaysintegernoKeep postings whose postedDate is within this many days. 0 = off. Rows with no date are dropped when set.
enrichEmailsbooleannoExperimental. Discovers an employer website from the company name. Lower hit rate here than on white-collar boards — see the FAQ. Default false.
monitorModebooleannoOnly return (and bill) jobs not already delivered to this account. Default false.
monitorStateNamestringnoName a watch so several schedules keep separate seen-ID lists.
emitBaselinebooleannoFirst monitoring run: true (default) emits current matches; false seeds silently.
includeUnchangedbooleannoMonitoring: also re-emit already-seen jobs, tagged changeType. Billed. Default false.
resetMonitoringStatebooleannoOne-shot: clear the seen-ID list at the start of this run.
maxItemsintegernoHard cap on emitted rows. Skipped monitor IDs and filter misses do not consume it. Default 1000. Free-tier runs are capped at 100.
maxConcurrencyintegernoParallel detail fetches. Default 10.
proxyobjectnoNot needed. Off by default.

Example input

{
"categories": ["back-office", "delivery-person"],
"cities": ["Mumbai", "Bangalore"],
"maxItems": 1000
}

Output Overview

One row per posting. 35 fields, all flat except skills, benefits and highlights.

Output Sample

{
"type": "job",
"source": "apna",
"jobId": "525613186",
"jobUrl": "https://apna.co/job/thane/back-office-coordinator-525613186",
"title": "Back Office Coordinator",
"companyName": "Radiance",
"location": "Thane",
"region": "Maharashtra",
"address": "RADIANCE GROUP, shil, opp. Bharat gear company, Dawle Village, Kausa, Mumbra, Thane, Maharashtra, India",
"postalCode": "400076",
"country": "IN",
"salaryMin": 120000,
"salaryMax": 149000,
"salaryCurrency": "INR",
"salaryPeriod": "MONTH",
"employmentType": "FULL_TIME",
"department": "Admin / Back Office / Computer Operator",
"roleCategory": "Back Office",
"shift": "Day Shift",
"experienceRequired": "Any experience",
"education": "Graduate",
"englishLevel": "Basic English",
"workLocationType": "Work from Office",
"genderPreference": "Female",
"skills": [],
"applicantCount": 93,
"benefits": ["Flexible Working Hours"],
"highlights": [],
"postedDate": "2026-09-02T12:00:38.539Z",
"validThrough": "2026-09-17",
"directApply": true,
"description": "Key Responsibilities: • Vendor identification & development • Procurement of civil/construction materials …",
"scrapedAt": "2026-09-08T21:12:44.011Z"
}

Key Output Fields

FieldTypeNotes
jobIdstringapna's own numeric id. Unique site-wide — safe as a dedup key.
salaryMin / salaryMax / salaryPeriodnumber / stringReported exactly as apna publishes them. salaryPeriod is almost always MONTH. See the FAQ before treating it as verified.
education / englishLevel / experienceRequiredstring | nullapna's stated screening bar. Read from the posting's own panels.
genderPreferencestring | nullSome apna employers state one. Reported as published — see the Disclaimer.
shiftstring | nullDay Shift / Night Shift.
workLocationTypestring | nullWork from Office, Work from Home, Field Job or Hybrid.
applicantCountnumber | nullHow many have applied. null on postings too new to have any.
postalCode / addressstring | nullFull street address and pincode from apna's structured data.
validThroughstring | nullWhen apna expires the posting.
benefits / highlightsstring[]apna's own badges, e.g. Flexible Working Hours, Urgently hiring.

FAQ

Do I need a login, cookie or proxy? No. apna serves every listing and posting page server-rendered to a plain request. The proxy input exists only for callers who need a specific egress IP.

The salary figures look too high for the role — is the scraper wrong? No. apna labels these monthly in both its own interface and its structured data, and this actor passes them through unchanged. Some employers clearly enter an annual figure into a monthly field — one Thane back-office posting reads "₹1,20,000 - ₹1,49,000 monthly" on apna itself. Treat salaryPeriod as apna's label rather than a verified fact, and sanity-check outliers against the role. Re-basing the numbers here would invent a figure apna never published.

Why is applicantCount sometimes null? apna only shows it once a posting has applicants, so brand-new postings have none.

Why did asking for two cities return only one? Because maxItems was smaller than one listing page. apna serves 25 postings per page, so a cap below 25 fills from the first category/city pair before the next is reached. Above that, the crawl cycles between pairs a page at a time.

Why do Bangalore and Gurgaon need mapping? apna 404s on bangalore, gurgaon and gurugram, and a bare delhi returns a page with no postings. The working slugs are bengaluru, gurgaon-gurugram and new-delhi. You can type either form.

How good is the email enrichment here? Lower than on white-collar boards, and deliberately opt-in. apna never publishes an employer website, so a domain has to be discovered from the company name — and many apna employers are small local businesses with no web presence at all. You are only billed for emails actually found.

Does monitoring charge for jobs I already have? No. In monitorMode an ID already in your baseline is skipped before the detail fetch, so it is not billed. maxItems counts only rows that land in the dataset. The first run after you turn monitoring on returns the current matches and builds that baseline (set emitBaseline to false if you want the first run silent).

Can I run two watches from one account? Yes — give each schedule its own monitorStateName (for example mumbai-office and pune-delivery) so their seen-ID lists stay separate.

Pricing

EventWhenPrice
Actor startOnce per run$0.005
Job rowEach posting written to the dataset$0.0008
Employer emailOnly when enrichment finds an address$0.05 per found email

Skipped monitor IDs, keyword misses and date-filter misses are not billed.

What this has that the other Apna actors do not

This actorgetascraper / themineworks / shahidirfan
Education, English, shift, gender, applicant count, pincodeAlways, from the posting pagePartial / card-level / optional flags
Only-new monitor + named watchesYes — skipped IDs not billedgetascraper / themineworks yes; shahidirfan no
Listing URLs in startUrlsYesgetascraper yes; others mixed
Keyword filterTitle or company (apna has no search API)themineworks title-only; getascraper generates searches
Employer emailOpt-in, billed only on a hitNo
Price per job$0.0008$0.0009–$0.00137

We still fetch every posting page. That is slower than a card-only dump and is why the screening fields are on the row.

Support

Found a bug or need a field that isn't here? Open a ticket on the Issues tab.

Additional Services

Need this data pushed somewhere specific, or another India job board covered? Get in touch through the Apify Console.

Explore More Scrapers

Other India job boards in this family: Naukri, Instahyre, Internshala, CutShort, Foundit, Shine.

🤖 For AI Agents & LLM Apps

This actor returns flat, self-describing rows. Deduplicate on jobId, which is unique site-wide. For matching a candidate to a role, the highest-signal fields are education, englishLevel, experienceRequired and shift — apna's postings are screened on those far more than on free-text skills, and skills is frequently empty. Treat salaryPeriod as apna's own label rather than a verified unit before doing arithmetic on salaryMin/salaryMax; outliers where an employer entered an annual figure into a monthly field do occur. applicantCount is the best available proxy for how contested a posting is.

⚠️ Disclaimer

This actor collects only publicly available job-posting data from apna.co. It does not log in, bypass authentication, or access any private or personal candidate data. Some apna employers publish a stated gender preference; that field is reported exactly as the employer published it and is included so researchers can study the practice — using it to filter candidates may be unlawful in your jurisdiction, and that is your responsibility, not apna's or this actor's. Use the output in line with apna's terms of service and applicable data-protection and employment law.

SEO Keywords

apna scraper, apna.co scraper, apna jobs api, apna jobs scraper, apna listing url, apna monitor, india jobs scraper, blue collar jobs scraper india, entry level jobs scraper, delivery jobs scraper india, back office jobs scraper, india job board scraper, mumbai jobs scraper, bengaluru jobs scraper, telecalling jobs data, field sales jobs india, wage data india scraper, blue collar recruitment data, job posting api india, gig economy jobs india, hiring data india, 10th pass jobs scraper, 12th pass jobs scraper