Foundit Jobs Lookup: foundit jobs scraper from $1.5/1k avatar

Foundit Jobs Lookup: foundit jobs scraper from $1.5/1k

Pricing

from $0.75 / 1,000 job posting returneds

Go to Apify Store
Foundit Jobs Lookup: foundit jobs scraper from $1.5/1k

Foundit Jobs Lookup: foundit jobs scraper from $1.5/1k

Run keyword + location job searches on foundit (formerly Monster India) and get one clean row per posting: title, company, location, experience, pay range (if stated) and apply link. No login required. You pay per posting returned, and a search that finds nothing is free.

Pricing

from $0.75 / 1,000 job posting returneds

Rating

0.0

(0)

Developer

Adrian Voss

Adrian Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

You write job searches the way you'd type them into foundit — python developer @ Bengaluru — and this actor runs each one against foundit's own backing search API, one of India's largest job boards (formerly Monster India), and returns one clean row per posting: title, company, location, experience required, pay range (when disclosed), and a permanent link.

No login. No API key. foundit's search-results page renders its listings client-side after load, but the same-origin JSON endpoint that page calls to fetch them is not — see "Why this one" below.

Who it's for

Recruiters, staffing agencies, and outbound teams building an India-market candidate or lead list who need fresh postings by role and city without clicking through foundit's search pages by hand. It's also the data layer behind an internal hiring-trends dashboard, or a Clay/n8n workflow that watches a role for new postings on a schedule. Pricing is pay-per-event: a fraction of a cent for a posting you actually got, and nothing for a search that finds nothing.

This actor is the India-market counterpart to seek-jobs-search-lookup (Australia) and xing-jobs-lookup (DACH): wide-net keyword + location search rather than a per-company listing. If you already know which companies to target, company-domain-enrichment's hiring-activity source answers a different question — this one answers "who's hiring for this role, in this Indian city" when you don't have the company list yet.

Why this one

  • Reaches data a plain page-load can't. foundit's search-results page ships real SEO meta tags (title, description) but the job cards themselves are fetched by a JavaScript bundle after load — the raw HTML has no listings in it at all. This actor instead calls that bundle's own data source directly: www.foundit.in/middleware/jobsearch, a same-origin JSON endpoint that answers a plain request (with one header set correctly — see the FAQ) with real, live results. No proxy, no browser automation, no CAPTCHA-solving.
  • The filters are real. query and locations are both genuinely honoured upstream — verified by watching the total-match count actually narrow (26,644 → 10,691 across one location filter on the same search) and confirming every returned posting's own location field matched.
  • You are never billed for the same posting twice. Every posting is deduplicated by its foundit job ID across the pages of one search and, by default, across every search in the run.
  • Honest about apply links. foundit mixes on-site and off-site postings in the same result set — some apply links point back to foundit, others go straight to the employer's own careers page or a third-party board. Both jobUrl (foundit's own listing page) and applyUrl (wherever the posting actually sends an applicant) are returned as separate fields rather than assuming one covers the other.
  • No fabricated salary data. foundit reports an undisclosed salary as the literal string "0-0 INR" on the majority of postings — this actor nulls that out instead of showing you a fake zero.

What you get

One row per job posting by default. (Turn off "One row per job posting" in the Input tab to get one row per search instead, with the whole posting list nested in jobs.) Every row carries these fields:

FieldType / formatDescription
querytextThe search line you passed in, unchanged.
foundbooleantrue if the search returned at least one posting. false rows are never charged.
statustextOK, NOT_FOUND (no postings for that search), BAD_FORMAT (the line had neither keywords nor a location), or BLOCKED.
searchKeywordstextThe keywords actually sent to foundit.
searchLocationtextThe location actually sent to foundit.
jobCountnumberHow many postings this search returned after your filters — this is exactly what you're charged for.
totalAvailablenumberfoundit's own total-match count for the search, before this actor's page/depth limits.
truncatedbooleantrue if more postings were available than you asked for, or if paging stopped early.
jobsarrayThe full posting list. Present in every row; it's what gets expanded into separate rows in "one row per posting" mode.
jobIdtextfoundit's own numeric posting ID — stable, and what deduplication keys on.
titletextJob title.
companyNametextHiring company (or recruiter) name, as foundit displays it.
locationtextLocation as foundit prints it on the posting (e.g. "Bengaluru, India").
remotebooleantrue if the location or title reads as remote / work-from-home.
experiencetextExperience range foundit lists for the role (e.g. "5-7 Years").
salaryTexttextPay range exactly as foundit's advertiser wrote it. Null when undisclosed (foundit's own "0-0 INR" placeholder is nulled out, not shown as a fake zero).
employmentTypetexte.g. "Full time", "Part time", "Contract", when foundit states one.
skillstextComma-separated skills foundit lists against the posting.
postedAtdate (ISO)foundit's own creation timestamp for the listing.
postedAgotextThe same thing in foundit's words ("20 hours ago").
jobUrllinkPermanent link to the posting on foundit.in.
applyUrllinkWhere the posting actually sends an applicant — sometimes foundit itself, sometimes the employer's own site or a third-party board (see "Why this one").
scrapedAtdate (ISO)When this actor fetched the row.

A search that returns no postings comes back as a single found: false row with a status/message explaining why, and is never charged. So does a blank line.

Pricing

  • Job posting returned: $1.5 per 1,000 job postings

Plus a $0.00005 start fee per run. Each event above is billed independently, only when it actually returns data — misses (found:false) are never charged.

You're charged per posting returned, not per search — a search that returns 30 postings costs thirty, a genuinely empty search costs nothing, and a BAD_FORMAT line costs nothing.

Because you pay per posting, "Most postings to return per search" is your budget control: leave it at 40 (two pages) and a ten-search run costs at most 400 postings' worth.

1,000 postings through this actor: ~$1.55 if every search finds results. The same list built by hand-paginating foundit's search pages and copying fields: hours of manual work per 1,000 rows.

How to use

  1. In the Apify Console. Open the actor page and click Start — the searches field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~foundit-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"searches":["python developer @ Bengaluru"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.

Paste one search per line:

python developer @ Bengaluru
data analyst
sales manager @ Mumbai

A line with no @ location uses the location you set once in 🔍 Search settings — leave that blank too and the search covers all of India.

🔍 Search settings:

InputWhat it does
defaultLocationLocation for any line that doesn't name one. Write it the way foundit does — a city name, e.g. "Bengaluru", "Mumbai", "Pune".
maxJobsPerQueryMost postings to return per search. Default 40 (two pages).

🎯 Narrow the results — applied here, to the postings after they arrive. They combine with AND across fields and OR within a field:

InputWhat it does
titleKeywordsKeep only titles containing one of these — ["engineer","analyst"].
excludeTitleKeywordsDrop titles containing one of these — ["intern","trainee"]. Applied after the include list.
companiesKeep only these companies — partial names match.
excludeCompaniesDrop these companies — useful for filtering out recruitment agencies you already know.
locationsNarrow a wide search to particular areas — e.g. "Whitefield", "Andheri".
remoteOnlyKeep only roles whose location or title reads as remote / work-from-home.
skipDuplicateJobsOn by default. Each posting is returned, and billed, once per run even if two searches overlap.

Input

{
"searches": [
"python developer @ Bengaluru"
]
}

One search per line. Write it as "keywords @ location", or just the keywords and set a location below. foundit is India-focused — locations are Indian cities, e.g. "Bengaluru", "Mumbai", "Pune". Accepted formats: python developer @ Bengaluru, data analyst, sales manager @ Mumbai.

Output

queryfoundstatussearchKeywordssearchLocationjobCounttotalAvailabletruncatedjobsjobIdtitlecompanyNamelocationremoteexperiencesalaryTextemploymentTypeskillspostedAtpostedAgojobUrlapplyUrlscrapedAt
python developer @ BengalurutrueOKpython developerBengaluru40232true<all postings found (full list)>34056108Senior Python DeveloperArun Thiyagarajan (Proprietor of Swathi Business Solutions)Bengaluru, Chennaifalse10-15 YearsFull timeAzure, Python, Sql, Aws2025-02-21T17:36:00.000Z11 hours agohttps://www.foundit.in/job/senior-python-developer-arun-thiyagarajan-proprietor-of-swathi-business-solutions-bengaluru-bangalore-340561082026-09-08T17:44:33.798Z

A miss comes back as a row with "found": false and is never charged.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~foundit-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"searches":["python developer @ Bengaluru"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~foundit-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"searches":["python developer @ Bengaluru"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~foundit-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"searches":["{{search}}"]}, mapping the row's search into the searches array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Foundit Jobs Scraper API from $1.5/1k | Apify" — the agent will find and run this actor.

Tips

  • Set a city in locations or defaultLocation whenever you can — foundit's own location filter is real (verified against every returned posting's location field) and narrows the result set before you pay for it, rather than after.
  • salaryText is empty on most postings — most Indian job ads don't disclose pay. Don't rely on this field being populated for filtering; use titleKeywords/excludeTitleKeywords instead.
  • Keep "Max concurrency" conservative on a large list of searches. This target has no browser fallback, so getting rate-limited costs more in wasted requests than a slower, steadier crawl.
  • applyUrl sometimes points off-site (the employer's own careers page, or another job board) — don't assume every posting's apply flow stays on foundit.in.

vs. alternatives

What it costsWhat you getTrade-off
This actor (foundit-jobs-lookup)$0.0015 per posting returned (FREE tier, less on paid tiers), $0.00005 actor start, nothing for a genuinely empty searchOne row per foundit job posting — title, company, location, experience, pay range and apply link, filterable by title keyword, company, location and remoteIndia-focused (foundit's own coverage); no full job description, only the fields the search API itself returns.
themineworks/foundit-jobs-scraperCommunity actor, 172 users in the last 30 days, $2.50 per 1,000 resultsAlso scrapes foundit job search resultsAn established incumbent with more users; this actor prices lower per posting and never charges for a miss.
Doing it yourselfYour time + finding foundit's undocumented /middleware/jobsearch endpoint, working out the Referer requirement, handling pagination and dedupThe same dataThis actor's endpoint discovery, dedup, and filtering logic is the maintenance burden it absorbs.

Prices for third-party tools are as researched in September 2026 and are not tracked here — check the vendor before relying on the comparison.

FAQ

Why do some postings have no salary? foundit reports an undisclosed salary as the literal string "0-0 INR" on the majority of postings — this actor treats that as no data and returns null rather than showing a fake zero. Expect salaryText to be empty on most rows.

Why does applyUrl sometimes point somewhere other than foundit.in? foundit's own search results mix postings foundit hosts directly with postings it aggregates from elsewhere — the aggregated ones send applicants straight to the employer's own careers page or a third-party board. jobUrl always stays on foundit.in; applyUrl is wherever the posting itself actually sends an applicant.

Does this handle rate limits or blocking? Each request goes through Apify's proxy configuration and retries up to twice on failure. A BLOCKED status means foundit returned HTTP 403, 429, or 503 — lowering "Max concurrency" can help; no proxy has been needed for this target as of the last live check.

Do I need to configure proxies? No. The actor uses Apify's default proxy configuration out of the box; foundit's search endpoint has not required anything beyond a plain HTTP request (with the right Referer header, which this actor sets automatically) in testing.

Is this GDPR-relevant? The data returned is business/professional information already published publicly by employers on foundit's job board (job title, company, location, pay range) — not personal data about private individuals.

Can I schedule this to re-check the same searches on a cadence? Yes — set up an Apify Task with a schedule and point it at this actor with a saved input. skipDuplicateJobs keeps a single run's overlapping searches from double-billing, but each scheduled run is independent — a role that appeared in yesterday's run will appear again today if it's still listed.

Can an AI agent call this directly? Yes. It's registered on the Apify MCP server — an agent in Claude, Cursor, or another MCP client can find and run it by name ("Foundit Jobs Scraper API from $1.5/1k | Apify"), or you can call the REST endpoint shown above from any script or workflow tool.