Unstop Scraper API - Hackathons, Competitions & Jobs
Pricing
from $2.50 / 1,000 opportunity returneds
Unstop Scraper API - Hackathons, Competitions & Jobs
Scrape Unstop hackathons, competitions, jobs, internships and scholarships. Unstop's API accepts any filter value, even a wrong one, and quietly returns everything. This actor only allows values it has checked, so your filter really works. Organiser emails come through where given. $2.50/1k.
Pricing
from $2.50 / 1,000 opportunity returneds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
19
Total users
8
Monthly active users
21 hours ago
Last modified
Categories
Share
Unstop Scraper: hackathons, competitions, internships and jobs from Unstop
Pick a board, add keywords or filters if you want them, and every matching opportunity comes back as a row: who is running it, who can enter, when registration closes, what you can win or earn, how many people registered, and where it happens. You can also paste single Unstop links or ids.
The thing worth knowing first: Unstop's own API does not check filter values. Send a status or a domain it does not recognise and it answers HTTP 200 with the whole archive, so a typo becomes thousands of rows you did not ask for. This actor only sends values tested against the live API, and anything else is refused before a request goes out, with an uncharged row saying what was dropped.
| Input | Boards, keywords, filters, or pasted Unstop links |
| Output | One row per opportunity |
| Ceiling | 10,000 results per search, and your own maxItems on top |
| Account needed | None, no login and no API key |
| Price | $2.50 per 1,000 opportunities, flat on every plan |
🎯 What Unstop Scraper does
Unstop, formerly Dare2Compete, is one of India's main boards for student and early-career opportunities. This walks its public listing API board by board and keyword by keyword, one flat row per opportunity.
Two boards are supergroups, which matters before you pay for the same row twice. Competitions
already contains every hackathon and quiz. All is Competitions plus workshops, conferences and
cultural events, and holds no jobs, internships or scholarships. Rows repeated across boards in one
run are deduplicated by id, and every row carries a plain kind.
Live counts measured on 8 August 2026: jobs 1,170, internships 861, competitions 275, hackathons 111, scholarships 6. The expired archive is far bigger, 5,893 hackathons against 111 live.
With detail fetching left on, each row also gets the organiser's contact email and phone where they published one, the round schedule and the participant count.
📥 What you give it
{"listing": ["hackathons"],"status": "open","region": "offline","cities": ["Pune", "Bangalore"],"maxItems": 50,"includeDetails": true}
| Field | Default | What it is |
|---|---|---|
listing | none, the form starts on Hackathons | Which boards to walk: hackathons, competitions, internships, jobs, quizzes, scholarships, workshops, conferences, cultural, hiring-challenges, all. Several are walked in turn. |
searchQueries | none | Free text, as you would type it into Unstop's search box. Each keyword is run against every board you picked. |
startUrls | none | Full Unstop opportunity URLs, or just the numeric id. Fetched directly with full detail. Short unstop.com/o/XXXX links carry no id and are not supported. |
status | open | open for registration open now, expired for past the deadline, closed for closed early. |
category | any | Unstop's domain taxonomy. The 17 values in the dropdown are the complete set that actually filters. |
region | either | online or offline. |
cities | none | Indian city names, matched against each row's city and state. Rows dropped here are never charged. |
workMode, employmentType, paidOnly, workingDays | any | Jobs and internships only. Work from home, full time, paid or unpaid, days per week. |
eligibleFor | anyone | Unstop's own buckets: college students, freshers, working professionals, school students. |
postedWithinDays | any time | 1, 7, 30, 90, 180 or 365 days. |
teamSize, entryFee | any | Competition-style boards only. On jobs they return nothing rather than being ignored. |
skill | none | One skill tag, spelled the way Unstop spells it. This one is case sensitive: Python returned 93 live jobs on 8 August 2026, python returned 0. |
sortBy, sortDirection | Unstop's own order, high to low | Newest, prize money, days left, or stipend and salary. Rows with no figure sink to the bottom. |
maxItems | 50 | Stop after this many opportunities across every board and keyword. This is your spending cap. |
includeDetails | true | Read each opportunity's own page for the organiser contact, round schedule and participant count. One extra request per row, about 100 ms, and nothing extra in money. |
includeDescriptionHtml | false | Keep the organiser's original markup beside the plain text. Roughly triples the size of the dataset. |
detailConcurrency | 8 | How many detail pages to read at once. 8 read 40 pages in 4.0 seconds. |
egressMode | auto | Which network route the run takes. Automatic suits almost every run. |
proxyConfiguration | none | Optional. Your own servers, used for every request instead of the routes above. |
📤 What you get back
A real row from a recent run, trimmed, with the long description cut short. The full row carries around 70 fields.
{"id": "1737808","title": "HackCelestial 3.0","url": "https://unstop.com/hackathons/hackcelestial-30-pillai-university-navi-mumbai-1737808","kind": "hackathon","status": "LIVE","registrationOpen": true,"organiserName": "Pillai University, Navi Mumbai","organiserUrl": "https://unstop.com/c/pillai-university-navi-mumbai-2057931","isOnline": false,"locationMode": "offline","city": "Navi Mumbai","state": "Maharashtra","country": "India","venue": "Dr. K. M. Vasudevan Pillai Campus, Plot No. 10, Sector 16, New Panvel East, Panvel, Navi Mumbai, Maharashtra 410206","registrationDeadline": "2026-09-27T23:59:00+05:30","daysLeft": 7,"deadlineText": "7 days left","registrationCount": 2353,"viewsCount": 374965,"participantCount": 713,"prizes": [{ "rank": "Prize Pool", "cash": 150000, "currency": "INR", "certificate": true, "prePlacementOffer": false }],"prizeTopCash": 150000,"prizeSummary": "Prize pool of Rs 1.5 Lakhs (Cash)","hasCashPrize": true,"minTeamSize": 1,"maxTeamSize": 5,"eligibilityTags": ["Engineering Students", "Undergraduate", "Arts, Commerce, Sciences & Others"],"skills": ["Problem Solving", "Artificial Intelligence (AI)", "Creative Thinking"],"hasEntryFee": true,"descriptionText": "Note: \n\n \n Only the Finalist / shortlisted teams will be required to pay a participation fee of ..."}
| Group | Fields |
|---|---|
| Identity | id, shortId, title, url, shortUrl, kind, Unstop's raw type and subtype, status, registrationOpen |
| Organiser | organiserName, organiserId, organiserUrl, organiserLogo, plus organiserEmail, organiserPhone, organiserContactName when detail fetching is on |
| Where | isOnline, locationMode, rawRegion, locations[], city, state, country, countryCode, venue |
| When | registrationDeadline, registrationOpensAt, startDate, endDate, daysLeft, deadlineText, postedAt, updatedAt, rounds[] |
| Prizes | prizes[] with rank, cash, currency, certificate and pre-placement offer, plus prizeTopCash, prizeTotalCash, prizeCurrency, hasCashPrize, prizeSummary |
| Pay | payMin, payMax, payCurrency, payPeriod, payType, payIsDisclosed, payIsEstimate, workMode, employmentType, minExperienceYears, maxExperienceYears |
| Who can enter | eligibilityTags[], eligibilitySectors[], eligibilityCourses[], eligibilityExperience[], eligibilityPassoutYears[], eligibilityRaw, eligibleCountries[], minTeamSize, maxTeamSize |
| Interest | registrationCount, participantCount, viewsCount |
| Rest | skills[], workFunctions[], categoryTags[], hasEntryFee, festivalName, trustedTag, logoUrl, descriptionText, optional descriptionHtml, scrapedAt |
Unstop marks every job and internship online even when it has an office and a city, so isOnline
on those boards is worked out from the work mode instead, with Unstop's own value kept beside it as
rawRegion. The city also sits in locations[] on jobs but in the venue block on events, so both
are read.
🧾 Reading the output
Three kinds of row can land in your dataset.
| Row | How to spot it | Charged |
|---|---|---|
| An opportunity | No _sample, no errorCode | yes |
| The sample row | _sample: true and charged: false | no |
| A diagnostic | An errorCode and a message | no |
Start the actor with nothing filled in and you get the sample row, to see the shape before spending.
Its organiserEmail is the placeholder team@example.org, not a real address.
| Code | What it means |
|---|---|
FILTER_NOT_SUPPORTED | A filter value is not one Unstop actually honours. It was dropped and the rest of the run carried on. |
NO_RESULTS | The search was valid and matched nothing. |
BAD_URL | A pasted link or id could not be read. Short /o/ links are the usual cause. |
NOT_FOUND | That opportunity id does not exist any more. |
DETAIL_FAILED | The listing row arrived but its own page did not. The row is kept without the organiser contact. |
SERVER_ERROR, HTTP_ERROR | Unstop answered with an error. Run it again. |
Watch out in the Console: the overview table has no errorCode column, so diagnostic rows show
up there as blank lines. They read fine in the JSON.
▶️ How to run it
- Open Unstop Scraper and click Try for free.
- Pick one or more boards under What to scrape.
- Add keywords, a domain or a city to narrow it, or leave them empty for the whole board.
- Set Maximum results, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost?
$2.50 per 1,000 opportunities. Flat on every Apify plan, no volume tiers.
You pay per opportunity row you receive. The sample row, diagnostic rows, rows dropped by the city filter and duplicates removed inside a run are not billed. Maximum results is a hard cap across every board and keyword in the run, so it doubles as your spending limit.
💡 What people use it for
- Listing the hackathons and case competitions open right now, with deadlines and prize money.
- Campus and community outreach: the competition boards publish an organiser email on most rows.
- Tracking who is hiring freshers in India, weekly, with Posted within set to a week.
- Finding in-person events in one city by combining In person only with a city list.
- Researching a sector with the archive: set the status to Expired and look at what ran last year and how many people registered.
🚧 What it does not do
- 10,000 results per search. Unstop's own total stops at 10,000 and asking past it fails. Split a big pull by domain, status or keyword.
- No login, so anything behind an Unstop account is out of reach: your applications, saved items, private college-only listings. It does not register or apply on your behalf either.
- No mentor profiles, blog posts, courses or practice questions, and no file downloads.
- Short
unstop.com/o/XXXXlinks are not supported. They carry no numeric id. - Unstop has no working city filter, so city matching happens here after the rows arrive. On a big board with a rare city that means a lot of reading for few rows.
- Organiser contacts depend on the board. Measured on 8 August 2026: an email on 222 of 275 competition rows, on 10 of 600 jobs, and on 10 of 861 internships.
- Pay figures are the organiser's own. Unstop estimates nothing,
payIsEstimateisfalseon every row, andpayIsDisclosedsays whether a figure exists at all. - Mostly India. Every in-person opportunity in the sample was in India, and
eligibleCountrieswas empty on all 40 detail pages checked.
🧭 Which job scraper do you need?
| If you want | Use |
|---|---|
| Hackathons, competitions, internships and jobs on Unstop | This one |
| Startup jobs from Wellfound, with the full description | Wellfound Jobs Scraper |
| Jobs in Germany, Austria and Switzerland | XING Jobs Scraper |
| Jobs in Germany, Austria, the UK, the Netherlands or Belgium | StepStone Jobs Scraper |
| Jobs in France | HelloWork Jobs Scraper |
❓ Questions people ask
Do I need an Unstop account or an API key? No. Everything comes from Unstop's public JSON API.
Can I get the organiser's email? On the competition boards, usually, with detail fetching on. On jobs and internships it is rare: employers post a listing, not a contact.
Can I scrape expired competitions? Yes, set Registration status to Expired. That archive is much larger than the live board.
Why did I get the same opportunity twice? Two runs, most likely. Within one run rows are deduplicated by id, including the overlap between Competitions and the hackathon and quiz boards.
What if nothing matches? You get one NO_RESULTS row, and no opportunity rows are billed.
Can I pull a single listing I have a link to? Yes. Put the full URL, or just the numeric id at the end of it, into Opportunity URLs.
Is this legal? These are public listings, and some rows carry an organiser's contact details, which data-protection law covers, so have a reason for collecting them. Apify's write-up on scraping and the law is a good start, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the input you used and the run ID. The errorCode
on the diagnostic row usually names the problem on its own.