India Entry-Level IT Jobs Scraper
Pricing
from $1.99 / 1,000 results
India Entry-Level IT Jobs Scraper
India Entry-Level IT Jobs Scraper aggregates fresher tech roles across multiple job boards - title, company, city, experience, skills, salary, job type, apply link and posted date. πΌ For job aggregators, recruiters and hiring analysis.
Pricing
from $1.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Hub
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
πΌ India Entry-Level IT Jobs Scraper β Fresher Job Listings From 13 ATS Sources
The India entry-level IT jobs scraper collects fresher and junior software job listings from thirteen recruitment sources in a single run, including LinkedIn and twelve applicant tracking systems used by Indian and global employers. Rather than checking Greenhouse, Lever, Workday, Darwinbox, Keka, Zoho and the rest one at a time, this India entry-level IT jobs scraper queries them concurrently and returns one normalised dataset of job listings with company, location, apply link and posted date.
The problem it solves is fragmentation. Indian tech hiring is spread across a long tail of ATS platforms β a startup on Lever, a mid-market firm on Keka, an enterprise on Workday, a services company on Darwinbox β and each has its own job board format. Aggregators lag behind, and many stale postings never get removed. Pulling directly from the source boards, with a posted_within filter defaulting to jobs posted today, gives you a fresher and more complete view of entry-level IT job data than any single portal provides.
π What Data Can You Extract with This India IT Jobs Scraper?
Each dataset item is one job listing, normalised across every source:
| Category | Fields | What you get |
|---|---|---|
| π Role identity | title, company, description | The advertised job title, the hiring company, and the long-form description text where the source provides it |
| π Location | city, state, country | Split location components, so you can filter to Bengaluru, Hyderabad, Pune or remote roles without string parsing |
| π Requirements | experience, skills | Required experience level and listed skills, which is what separates a genuine fresher role from a mislabelled one |
| π° Compensation | salary | Advertised salary where the employer discloses it |
| π Recency | posted_date_raw, posted_date_parsed | The source's original date string plus a normalised UTC timestamp for reliable sorting |
| π Application | apply_link, job_type | Direct link to the application page and the employment type |
| π·οΈ Provenance | source | Which of the thirteen sources produced the listing |
The posted_date_parsed field deserves particular attention. Every ATS formats dates differently β ISO 8601 with an offset from Greenhouse, relative strings like "2 days ago" from LinkedIn, local formats elsewhere. Having a single normalised UTC value alongside the raw string means you can sort a merged multi-source result set chronologically without writing a parser per platform, which is exactly the work that usually makes multi-source job aggregation painful.
π Key Features of the India IT Jobs Scraper
| Feature | Description |
|---|---|
| π 13 job sources | LinkedIn plus Greenhouse, Lever, SmartRecruiters, Workday, iCIMS, Jobvite, BambooHR, Zoho, Freshteam, Keka, Darwinbox and Recruitee |
| π€ Automatic keyword expansion | LinkedIn searches are expanded into synonym variants, up to max_keyword_variants, so "software engineer fresher" also catches equivalent phrasings |
| β±οΈ Recency filtering | posted_within restricts results to jobs posted today, in the last 24 hours, this week, or any time |
| β‘ Concurrent source scraping | source_concurrency controls how many sources are queried in parallel, with LinkedIn variants concurrent separately |
| ποΈ Fast and thorough modes | execution_mode trades shorter timeouts and fewer retries against completeness |
| π Wall-clock budgets | run_timeout_seconds and source_timeout_seconds cap total and per-source runtime so a slow board cannot stall the job |
| π Per-source result caps | max_results_per_source prevents one prolific board from dominating the dataset |
| ποΈ Normalised dates | Every listing carries both the raw source date and a parsed UTC timestamp |
| π Direct apply links | apply_link points at the employer's own application page, not an intermediary |
π Why Choose This India Entry-Level IT Jobs Scraper?
Direct-from-ATS data, not aggregator leftovers. Listings come from the applicant tracking systems employers actually post into β Greenhouse's board API, Lever's API, SmartRecruiters' API and the rest. That means fewer stale postings, fewer duplicates from reposting agencies, and an apply_link that goes straight to the employer.
Recency you can trust and control. The default posted_within value is today, which is deliberately aggressive. Job boards are full of roles that were filled weeks ago. Being able to constrain the window to today or 24 hours, and to sort reliably on posted_date_parsed, is what makes the output usable for daily job alerts rather than an archive.
Synonym expansion for LinkedIn coverage. Indian entry-level tech roles are advertised under a wide range of titles β fresher, graduate engineer trainee, associate software engineer, junior developer, GET. The scraper expands your base keywords phrase into up to max_keyword_variants synonyms for LinkedIn, catching listings a single literal query would miss.
Runtime you can budget. Multi-source scraping normally means unpredictable run lengths. Here, run_timeout_seconds, source_timeout_seconds and execution_mode give you explicit control: a slow or unresponsive board is dropped for that run rather than blocking everything else.
π₯ Input
{"sources": ["linkedin", "greenhouse", "lever", "smartrecruiters", "workday","icims", "jobvite", "bamboohr", "zoho", "freshteam","keka", "darwinbox", "recruitee"],"keywords": "software engineer fresher","location": "India","posted_within": "today","job_type": "both","max_results_per_source": 100,"max_keyword_variants": 20,"execution_mode": "fast","run_timeout_seconds": 180,"source_timeout_seconds": 120,"source_concurrency": 6,"linkedin_variant_concurrency": 2}
π§ India IT Jobs Scraper Input Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
sources | array | No | all 13 sources | Which job sources to query. The ATS sources (greenhouse, lever, smartrecruiters, workday, recruitee, icims, jobvite, bamboohr, zoho, freshteam, keka, darwinbox) all require company identifiers in companies_seed.json |
keywords | string | No | software engineer fresher | Base job title or keyword phrase to search for. LinkedIn expands this into multiple synonym variants automatically |
location | string | No | India | Location filter applied when searching and filtering jobs |
posted_within | string | No | today | Only keep jobs posted within this window. One of today, 24h, week, any |
job_type | string | No | both | Employment type filter. One of both, full-time, internship, part-time, contract. both applies no filter |
max_results_per_source | integer | No | 100 | Upper bound on how many jobs to collect from each individual source |
max_keyword_variants | integer | No | 20 | Maximum number of keyword synonym variants generated for LinkedIn |
execution_mode | string | No | fast | fast favours shorter timeouts and fewer retries; thorough favours completeness over speed |
run_timeout_seconds | integer | No | 180 | Overall wall-clock budget for the whole run, across all sources |
source_timeout_seconds | integer | No | 120 | Wall-clock budget for any single source before it is dropped for this run |
source_concurrency | integer | No | 6 | How many sources to scrape concurrently |
variant_concurrency | integer | No | 4 | Reserved for future sources that support keyword-parameterised search; currently unused |
linkedin_variant_concurrency | integer | No | 2 | How many LinkedIn keyword variants to search concurrently |
π‘ Input Examples
Daily fresher alert across ATS boards only, skipping LinkedIn:
{"sources": ["greenhouse", "lever", "smartrecruiters", "workday", "recruitee"],"keywords": "graduate engineer trainee","location": "India","posted_within": "today","job_type": "full-time"}
Weekly internship sweep, thorough mode with a longer budget:
{"keywords": "software engineering intern","location": "Bengaluru","posted_within": "week","job_type": "internship","execution_mode": "thorough","run_timeout_seconds": 600,"source_timeout_seconds": 240,"max_results_per_source": 200}
Wide LinkedIn-focused search with aggressive synonym expansion:
{"sources": ["linkedin"],"keywords": "junior data engineer","location": "Hyderabad","posted_within": "24h","max_keyword_variants": 30,"linkedin_variant_concurrency": 4}
π€ Output
{"title": "Customer Success Engineer, India","company": "gitlab","source": "greenhouse","city": "Remote","state": "India","country": "India","experience": "","skills": "","salary": "Not mentioned","job_type": "","apply_link": "https://job-boards.greenhouse.io/gitlab/jobs/8607271002","posted_date_raw": "2026-08-10T16:52:46-04:00","posted_date_parsed": "2026-08-10 20:52 UTC","description": ""}
π§Ύ India IT Jobs Output Fields
| Field | Type | Description |
|---|---|---|
title | string | null | Job title as advertised |
company | string | null | Company name |
source | string | null | Which source the listing came from |
city | string | null | City, or Remote for location-independent roles |
state | string | null | State or region |
country | string | null | Country |
experience | string | null | Required experience, where the source publishes it |
skills | string | null | Skills required or listed |
salary | string | null | Advertised salary |
job_type | string | null | Employment type of the job |
apply_link | string | null | Link to the job application page |
posted_date_raw | string | null | Posted date exactly as the source provided it |
posted_date_parsed | string | null | Normalised UTC timestamp for the posted date |
description | string | null | Long-form description text |
Not every source populates every field. As the real sample above shows, experience, skills, job_type and description are frequently empty on ATS listings that only expose a summary record, while title, company, apply_link and the date fields are consistently present.
π» How to Use the India IT Jobs Scraper (Step by Step)
Step 1: Choose which sources to query
sources defaults to all thirteen. Note the important caveat in the schema: every ATS source other than LinkedIn requires company identifiers to be present in companies_seed.json. The scraper queries specific companies' job boards on those platforms rather than searching the platform globally. If you only want the broadest coverage with no seed dependency, restrict sources to ["linkedin"]; if you want direct-from-employer data, keep the ATS sources enabled.
Step 2: Write a keyword phrase, not a keyword list
keywords is a single string, not an array. Give it a natural phrase such as "software engineer fresher", "graduate engineer trainee" or "junior full stack developer". For LinkedIn, the scraper expands this into synonym variants automatically, so you do not need to enumerate every possible title yourself β that is what max_keyword_variants controls.
Step 3: Set your location filter
location defaults to India and is applied when searching and filtering. Narrow it to a city β Bengaluru, Hyderabad, Pune, Chennai, Noida β when you are targeting a specific tech hub. Note that remote roles frequently come through with city set to Remote and state set to the country, as in the sample output, so a city filter will exclude them.
Step 4: Choose a recency window
posted_within defaults to today, which is the right setting for a daily alert. Use 24h for a rolling window, week for a broader sweep, or any when you are building a historical picture rather than chasing new postings. Recency is the single biggest determinant of how many results you get, so if a run returns very few listings, widen this first.
Step 5: Tune the runtime budget
Multi-source scraping is inherently variable in duration. run_timeout_seconds caps the whole job at 180 seconds by default and source_timeout_seconds gives each individual source 120 seconds before it is abandoned. If you enable many sources or set a high max_results_per_source, raise both. Switching execution_mode to thorough lengthens internal timeouts and adds retries, which improves completeness at the cost of speed.
Step 6: Set concurrency to match your budget
source_concurrency (default 6) determines how many boards are queried at once, and linkedin_variant_concurrency (default 2) how many LinkedIn synonym searches run in parallel. Higher concurrency finishes faster but is more likely to trigger rate limiting on the source side. If LinkedIn results are inconsistent, lower linkedin_variant_concurrency before anything else.
Step 7: Run, export and deduplicate
Start the run, then export the dataset as JSON, CSV or Excel, or read it via the API. Because the same role can legitimately appear from more than one source, deduplicate on the combination of company and title, or on apply_link where it is populated. Then sort on posted_date_parsed to get a clean, chronological view of what is genuinely new.
π API Access & Integrations
Run the India entry-level IT jobs scraper and get listings back in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers-hub~india-it-jobs-multi-source-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": "software engineer fresher","location": "India","posted_within": "today","job_type": "full-time","max_results_per_source": 100}'
Python, using the official client:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("scrapers-hub/india-it-jobs-multi-source-scraper").call(run_input={"sources": ["linkedin", "greenhouse", "lever"],"keywords": "junior software developer","location": "Bengaluru","posted_within": "24h","execution_mode": "thorough","run_timeout_seconds": 400,})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["posted_date_parsed"], job["company"], "-", job["title"])print(" apply:", job["apply_link"])
The dataset can be forwarded to Zapier, Make, Google Sheets or Slack, or pushed to your own endpoint with an Apify webhook when a run finishes β which is how most people wire up a daily fresher-jobs digest.
π‘ Best Use Cases for India IT Jobs Data
π Daily fresher job alerts
Schedule the scraper with posted_within set to today and route new listings to Slack or email. Because apply_link points at the employer's own application page and posted_date_parsed gives a reliable timestamp, candidates can apply within hours of a role going live β which measurably matters for high-volume entry-level roles.
π« Campus placement and training cell support
Placement cells need to know which companies are hiring freshers right now and at what level. Grouping listings by company and filtering on job_type of internship or full-time produces a live picture of graduate demand that is far more current than annual placement brochures.
π Tech hiring market analysis
Aggregate title, skills and city over repeated runs and you have a longitudinal dataset of what Indian employers are asking entry-level engineers to know. Counting distinct company values per source also reveals which ATS platforms dominate different segments of the market.
π΅ Entry-level salary benchmarking
The salary field is populated only when an employer discloses it, which in Indian tech is a minority of listings. That minority is still valuable: filtering to rows where salary is present and not "Not mentioned", then segmenting by city and experience, gives a defensible baseline for fresher compensation conversations.
πΊοΈ Location and remote-work trend tracking
The split city / state / country fields make it straightforward to measure how many entry-level roles are tied to a specific hub versus advertised as remote. Rows where city is Remote are directly countable, which is difficult when location is a single unparsed string.
π’ Competitive recruitment intelligence
Recruiters and employer-brand teams can track which competitors are posting fresher roles, how frequently, and with what titles. Filtering by company and sorting on posted_date_parsed shows hiring cadence; the skills field, where populated, shows what capability they are building.
π€ Job board and aggregator content
If you operate a niche job board for Indian tech freshers, this actor is a content pipeline. The normalised schema β one shape across thirteen sources β means ingestion logic is written once, and source lets you attribute or filter by origin platform.
βοΈ Tips for Better India IT Jobs Scraping Results
- Widen
posted_withinbefore changing anything else. The default oftodayis strict. If a run returns few listings, try24horweekbefore concluding your keywords are wrong. - Remember the seed dependency. All ATS sources depend on company identifiers in
companies_seed.json. A run with only ATS sources enabled and no matching seed entries will return little regardless of your other settings. - Raise timeouts when enabling many sources. With all thirteen sources and
execution_modeset tothorough, the default 180-secondrun_timeout_secondsis likely to cut the run short. Budget generously. - Lower
linkedin_variant_concurrencyif LinkedIn results fluctuate. Two parallel variant searches is already conservative; dropping to one trades speed for stability. - Use
job_typedeliberately.bothapplies no employment-type filter at all, which is usually what you want for broad coverage. Set it explicitly only when you specifically need internships or contracts. - Deduplicate on
company+title. The same role can appear via more than one source. Deduplicating before analysis prevents double-counting in any hiring-trend metric.
π οΈ Troubleshooting
Why did the run return very few jobs?
Three likely causes, in order: posted_within is set to today and few roles were posted today; the ATS sources you enabled have no matching entries in companies_seed.json; or run_timeout_seconds expired before slower sources finished. Widen the date window, verify your source selection, and raise the timeout.
A source is missing entirely from my results.
Each source has its own source_timeout_seconds budget and is dropped for that run if it exceeds it. Check the log for which sources were abandoned, then raise source_timeout_seconds, switch execution_mode to thorough, or reduce source_concurrency so each source gets more effective bandwidth.
Why are experience, skills and description empty on many listings?
Because many ATS job board endpoints expose only a summary record. The fields exist in the schema and are populated when the source provides them; when it does not, they come back empty rather than being fabricated. Follow apply_link for the full posting.
The salary field says "Not mentioned". Salary disclosure is optional and uncommon in Indian tech postings. The scraper reports what the source publishes. Filter to rows with a real value if you are doing compensation analysis.
Results include roles that are not entry-level.
keywords biases the search but does not guarantee seniority filtering, and LinkedIn's synonym expansion can broaden the net. Post-filter on title and experience for terms like fresher, graduate, junior, associate or trainee to tighten the set.
β Frequently Asked Questions About India IT Jobs Scraping
What does the India entry-level IT jobs scraper collect? Fresher and junior IT job listings from thirteen sources β LinkedIn plus twelve applicant tracking systems β normalised into a single schema with title, company, location, skills, salary, apply link and posted date.
Which job sources are supported? LinkedIn, Greenhouse, Lever, SmartRecruiters, Workday, iCIMS, Jobvite, BambooHR, Zoho, Freshteam, Keka, Darwinbox and Recruitee.
Do all sources work out of the box?
LinkedIn does. Every ATS source requires company identifiers in companies_seed.json, because those platforms are queried per employer board rather than searched globally.
How recent are the job listings?
As recent as you ask for. posted_within accepts today, 24h, week or any, and defaults to today.
Can I search for internships specifically?
Yes. Set job_type to internship. The other options are full-time, part-time, contract and both, where both applies no employment-type filter.
How does keyword expansion work?
For LinkedIn, the base phrase in keywords is expanded into synonym variants β up to max_keyword_variants, default 20 β and each variant is searched. This catches roles advertised under different but equivalent titles.
Can I scrape jobs outside India?
The location field is a free-text filter and defaults to India, but the actor is tuned for the Indian entry-level IT market. Other locations may work with reduced coverage.
Why do some listings have city set to Remote?
Because the employer advertised the role as location-independent. In those cases state and country typically still carry the region the role is scoped to, as in the sample output.
How long does a run take?
It is bounded by run_timeout_seconds, default 180. Actual duration depends on how many sources you enable, max_results_per_source, and whether execution_mode is fast or thorough.
What is the difference between fast and thorough mode?
fast uses shorter timeouts and fewer retries, finishing sooner but potentially missing slower sources. thorough favours completeness at the cost of runtime.
What does variant_concurrency do?
Nothing at present. It is reserved for future sources that support keyword-parameterised search and is currently unused. Use linkedin_variant_concurrency to control LinkedIn parallelism.
How do I remove duplicate listings?
Deduplicate on apply_link where present, or on the combination of company and title. The same role can appear legitimately from more than one source.
Can I schedule daily job alerts?
Yes. Use Apify Schedules with posted_within set to today, and attach a webhook that pushes new items into Slack, email or your own application.
Are the apply links direct to the employer?
Yes for ATS sources β apply_link points at the employer's own job board page, such as a Greenhouse or Lever hosted application form, rather than an intermediary.
Is scraping job listings legal? The scraper reads publicly accessible job postings. You remain responsible for complying with the terms of service of each source platform and with applicable data protection law when storing or republishing listings.
π Support & Feedback
If a source is failing, results look wrong, or a run behaves unexpectedly, please open a report on the Issues tab with your input configuration and the run ID. Including which sources were involved makes diagnosis much quicker.
For custom work β additional ATS integrations, an expanded company seed list, different geographies, or a private build tuned to your hiring pipeline β email scraperhubapi@gmail.com.
If this India entry-level IT jobs scraper is useful, please leave a review on the actor page. Feedback directly shapes which sources and features get added next.
βοΈ Disclaimer
This India entry-level IT jobs scraper collects only publicly available job listings from public job boards and applicant tracking system pages. It does not log into any platform, bypass authentication, or access recruiter-only or candidate-private data.
Job listings may contain personal data such as recruiter names or contact details. Where they do, GDPR, India's Digital Personal Data Protection Act and comparable regimes may apply to your processing, and you are responsible for establishing a lawful basis and honouring erasure requests. You are also responsible for complying with the terms of service of LinkedIn and of each applicant tracking system whose listings you collect, including any restrictions on republication or commercial reuse of job data.
To request removal of specific data collected by this actor, email scraperhubapi@gmail.com with the details.