Skip to main content
Thirdwatchthirdwatch
Jobs & recruitment

Track India IT Services Hiring on Naukri (2026 Guide)

Monitor new TCS, Infosys, Wipro and other IT-services jobs on Naukri. Persistent deduplication, hiring-velocity analysis and Python recipes.

Apr 27, 2026 · 5 min read · 1,123 words
See the scraper →

Thirdwatch's Naukri.com Scraper can persist a watchlist and return only newly discovered jobs on later runs. Use it to measure hiring volume, locations, experience bands and skill demand without repeatedly paying for unchanged rows.

▶ Skip the setup: Run this as a ready-to-go task on Apify → — pre-loaded with the exact configuration from this guide. No code required.

Why track IT services hiring on Naukri

Large IT-services employers publish roles across many cities, business units and skill families. A consistent feed of newly posted jobs gives researchers a defensible way to compare hiring volume and mix over time. It does not, by itself, prove why a company is hiring.

The job-to-be-done is structured. An equity analyst covering Indian IT wants weekly posting velocity per firm with leading-indicator alerts. A competitive-intelligence team at one IT services firm monitors peer hiring to detect contract wins or strategic shifts. A labour-market researcher studies which experience bands (fresher vs lateral hiring) each firm is targeting. A tech-skills training company studies which skills are being adopted by Indian IT services firms to inform curriculum updates. All reduce to weekly Naukri snapshots × tier-1 IT firms × structured analysis.

How does this compare to the alternatives?

Three options for getting Indian IT services hiring intelligence:

Approach Cost per 1,000 jobs × weekly × 7 firms Reliability Setup time Maintenance
Quarterly company disclosures (TCS, Infosys, Wipro investor relations) Free Authoritative but lagging 90 days Hours Per-firm release schedule
Indian equity-research SaaS (Bloomberg, Refinitiv with India coverage) $20K–$200K/year flat High Days–weeks Vendor lock-in
Thirdwatch Naukri Scraper Pay per result Production-tested across 20+ Indian cities Half a day Thirdwatch tracks Naukri changes

Quarterly disclosures give official confirmation but lag the leading-indicator window. The Naukri Scraper actor page gives you the structured weekly feed at pay-per-result pricing.

How to track IT services hiring in 4 steps

Step 1: How do I authenticate against Apify?

Sign in at apify.com (free tier, no credit card), open Settings → Integrations, and copy your personal API token. Every example below assumes the token is in APIFY_TOKEN:

export APIFY_TOKEN="apify_api_xxxxxxxxxxxxxxxx"

Step 2: How do I take a weekly snapshot of all major IT services firms?

Build city × firm queries. Naukri encodes both in the search query string.

import os, requests, datetime, json, pathlib

ACTOR = "thirdwatch~naukri-jobs-scraper"
TOKEN = os.environ["APIFY_TOKEN"]

CITIES = ["bangalore", "mumbai", "delhi", "hyderabad",
          "chennai", "pune", "kolkata"]
FIRMS = ["tcs", "infosys", "wipro", "hcl",
         "tech mahindra", "ltimindtree", "cognizant"]

queries = [f"{firm} {city}" for firm in FIRMS for city in CITIES]
print(f"Submitting {len(queries)} queries (7 firms × 7 cities)")

resp = requests.post(
    f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
    params={"token": TOKEN},
    json={
        "queries": queries,
        "maxResultsPerQuery": 100,
        "includeDescription": False,
        "monitorMode": "new-jobs",
        "monitorStoreName": "naukri-it-services-watch",
    },
    timeout=3600,
)
records = resp.json()
week = datetime.date.today().isocalendar()
ts = f"{week.year}-W{week.week:02d}"
pathlib.Path(f"snapshots/naukri-it-{ts}.json").write_text(json.dumps(records))
print(f"{ts}: {len(records)} listings")

The first run establishes the baseline. Later runs return only jobs not present in the monitor's persistent history. Keep the store name stable and avoid overlapping runs that use the same store.

Step 3: How do I compute weekly posting velocity per firm?

Aggregate snapshots by week and firm; count unique apply URLs.

import pandas as pd, glob

frames = []
for f in sorted(glob.glob("snapshots/naukri-it-*.json")):
    week = pathlib.Path(f).stem.replace("naukri-it-", "")
    for j in json.loads(pathlib.Path(f).read_text()):
        cn = (j.get("company_name") or "").lower()
        for firm in FIRMS:
            if firm in cn:
                frames.append({"week": week, "firm": firm,
                               "url": j["apply_url"],
                               "experience": j.get("experience"),
                               "skills": j.get("skills", [])})
                break

df = pd.DataFrame(frames).drop_duplicates(subset=["week", "url"])
weekly = df.groupby(["week", "firm"]).size().reset_index(name="postings")
pivot = weekly.pivot(index="firm", columns="week", values="postings").fillna(0)
weeks = sorted(pivot.columns)
if len(weeks) >= 5:
    pivot["wow_pct"] = (pivot[weeks[-1]] / pivot[weeks[-5:-1]].mean(axis=1).clip(lower=1)) - 1
    print(pivot[[weeks[-1], "wow_pct"]].sort_values("wow_pct", ascending=False))

Use percentage changes as alert thresholds for manual review, not as proof of ramp-up or contraction. Small baselines can make percentage changes look dramatic.

Step 4: How do I detect skill-mention shifts and contract-win signals?

Aggregate skill arrays by firm and week, surface fastest-growing skills.

import re

# Skill arrays exploded
skill_frames = []
for _, row in df.iterrows():
    skills = row.skills if isinstance(row.skills, list) else []
    for s in skills:
        skill_frames.append({"week": row.week, "firm": row.firm,
                             "skill": s.lower().strip()})

skill_df = pd.DataFrame(skill_frames)
weekly_skills = skill_df.groupby(["week", "firm", "skill"]).size().reset_index(name="mentions")

# Fastest-growing skills per firm over the last 8 weeks
for firm in FIRMS:
    firm_skills = weekly_skills[weekly_skills.firm == firm]
    pivot_s = firm_skills.pivot(index="skill", columns="week", values="mentions").fillna(0)
    if len(pivot_s.columns) < 8:
        continue
    weeks_s = sorted(pivot_s.columns)
    pivot_s["growth"] = pivot_s[weeks_s[-1]] - pivot_s[weeks_s[-8]]
    rising = pivot_s[pivot_s.growth >= 5].sort_values("growth", ascending=False).head(5)
    print(f"\n--- {firm.upper()}: rising skills (8-week growth) ---")
    print(rising[[weeks_s[-8], weeks_s[-1], "growth"]])

If posting volume and related skill mentions move together, flag the company and location for deeper research. Confirm the cause with company disclosures, tender notices or other primary evidence.

Sample output

A single record from the dataset for one Bangalore TCS posting looks like this. Five rows of this shape weigh ~25 KB.

{
  "title": "Software Engineer",
  "company_name": "Tata Consultancy Services",
  "location": "Bengaluru",
  "salary_raw": "Not disclosed",
  "experience": "2-5 Yrs",
  "skills": ["Java", "Spring Boot", "Microservices", "AWS"],
  "description": "Looking for a Software Engineer with experience in Java...",
  "posted_at": "1 day ago",
  "apply_url": "https://www.naukri.com/job-listings-software-engineer-tcs-..."
}

apply_url is the canonical natural key for cross-snapshot dedup. experience (2-5 Yrs) is the experience-band signal — parse the lower bound to bucket into Junior/Mid/Senior tiers. skills is a clean string array — much higher-signal than parsing description text. salary_raw is Not disclosed for the majority of IT services postings (cultural norm in Indian IT services); for compensation analysis layer in AmbitionBox data instead.

Common pitfalls

Three things go wrong in production IT services tracking pipelines. Subsidiary attribution — Tata Consultancy Services posts both as "TCS" and "Tata Consultancy Services" in different listings; build a per-firm name-variation map (TCS / Tata Consultancy Services / TATA / Tata Consultancy) before company aggregation. Multi-city listings — IT services firms frequently post the same role across multiple cities ("Bengaluru, Hyderabad, Pune"); dedupe by apply_url rather than counting per-city occurrences. Fresher vs lateral mix shifts — TCS's 0-1 Yrs band reflects campus-recruitment placements more than open-market hiring intent; for genuine market-hiring intelligence focus on 3-7 Yrs experience-band postings rather than freshers.

Thirdwatch's actor uses Naukri's web endpoints over HTTP, supports pagination up to 1,000 results per query, and can enrich rows with descriptions when needed. Monitoring runs fail closed: if a configured search is incomplete, the saved history is not advanced. Pair Naukri with our AmbitionBox Scraper when you need employer-review context.

Related use cases

Frequently asked questions

Why track IT services hiring specifically?

Large IT-services employers publish many roles across cities and skills. Tracking their new postings consistently can reveal changes in hiring mix, location demand and skill demand. Treat those changes as research signals, not proof of a contract win or future financial performance.

What signals matter for IT services hiring intelligence?

Three: (1) net new postings per week per firm — a 30%+ rise indicates ramp-up for new contracts; sustained drops indicate bench-staffing slowdown. (2) skill-mention shifts (from Java/.NET toward GenAI, cloud-native, cybersecurity) signal where the firm is investing. (3) experience-band distribution — heavy 0-3 year bands signals fresher hiring (training-led growth), heavy 5-8 year bands signals lateral hiring (project-led growth). All three are derivable from Naukri postings.

What cadence captures meaningful trend signal?

Daily runs are useful for recruiter alerts; weekly aggregation is usually easier to interpret for market research. The monitor stores job IDs between runs and emits only jobs it has not seen before, so unchanged rows are not returned or billed again.

How does this compare to AmbitionBox attrition tracking?

AmbitionBox tracks attrition (employee departures) via review velocity and category-rating drift; Naukri tracks intent to hire (postings). The two are complementary — rising attrition + rising postings = sustained labour churn, declining postings + rising attrition = company contraction. Run both in parallel and join by company name for the complete labour-market view.

Can I detect contract-win signals?

No. A posting spike may have several explanations, including replacement hiring, evergreen requisitions or duplicate listings. Use it to choose what to investigate next, then corroborate it with company disclosures and other primary sources.

How fresh is Naukri data?

Each run pulls live from Naukri at request time. Naukri indexes new postings within hours and prominently displays 1 day ago, 3 hours ago badges. For active intelligence workflows, daily cadence catches fresh postings; for quarterly trend analysis, weekly is sufficient.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.