Unstop Scraper API - Hackathons, Competitions & Jobs avatar

Unstop Scraper API - Hackathons, Competitions & Jobs

Pricing

from $2.50 / 1,000 opportunity returneds

Go to Apify Store
Unstop Scraper API - Hackathons, Competitions & Jobs

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

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

8

Monthly active users

21 hours ago

Last modified

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.

InputBoards, keywords, filters, or pasted Unstop links
OutputOne row per opportunity
Ceiling10,000 results per search, and your own maxItems on top
Account neededNone, 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
}
FieldDefaultWhat it is
listingnone, the form starts on HackathonsWhich boards to walk: hackathons, competitions, internships, jobs, quizzes, scholarships, workshops, conferences, cultural, hiring-challenges, all. Several are walked in turn.
searchQueriesnoneFree text, as you would type it into Unstop's search box. Each keyword is run against every board you picked.
startUrlsnoneFull 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.
statusopenopen for registration open now, expired for past the deadline, closed for closed early.
categoryanyUnstop's domain taxonomy. The 17 values in the dropdown are the complete set that actually filters.
regioneitheronline or offline.
citiesnoneIndian city names, matched against each row's city and state. Rows dropped here are never charged.
workMode, employmentType, paidOnly, workingDaysanyJobs and internships only. Work from home, full time, paid or unpaid, days per week.
eligibleForanyoneUnstop's own buckets: college students, freshers, working professionals, school students.
postedWithinDaysany time1, 7, 30, 90, 180 or 365 days.
teamSize, entryFeeanyCompetition-style boards only. On jobs they return nothing rather than being ignored.
skillnoneOne 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, sortDirectionUnstop's own order, high to lowNewest, prize money, days left, or stipend and salary. Rows with no figure sink to the bottom.
maxItems50Stop after this many opportunities across every board and keyword. This is your spending cap.
includeDetailstrueRead 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.
includeDescriptionHtmlfalseKeep the organiser's original markup beside the plain text. Roughly triples the size of the dataset.
detailConcurrency8How many detail pages to read at once. 8 read 40 pages in 4.0 seconds.
egressModeautoWhich network route the run takes. Automatic suits almost every run.
proxyConfigurationnoneOptional. 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 ..."
}
GroupFields
Identityid, shortId, title, url, shortUrl, kind, Unstop's raw type and subtype, status, registrationOpen
OrganiserorganiserName, organiserId, organiserUrl, organiserLogo, plus organiserEmail, organiserPhone, organiserContactName when detail fetching is on
WhereisOnline, locationMode, rawRegion, locations[], city, state, country, countryCode, venue
WhenregistrationDeadline, registrationOpensAt, startDate, endDate, daysLeft, deadlineText, postedAt, updatedAt, rounds[]
Prizesprizes[] with rank, cash, currency, certificate and pre-placement offer, plus prizeTopCash, prizeTotalCash, prizeCurrency, hasCashPrize, prizeSummary
PaypayMin, payMax, payCurrency, payPeriod, payType, payIsDisclosed, payIsEstimate, workMode, employmentType, minExperienceYears, maxExperienceYears
Who can entereligibilityTags[], eligibilitySectors[], eligibilityCourses[], eligibilityExperience[], eligibilityPassoutYears[], eligibilityRaw, eligibleCountries[], minTeamSize, maxTeamSize
InterestregistrationCount, participantCount, viewsCount
Restskills[], 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.

RowHow to spot itCharged
An opportunityNo _sample, no errorCodeyes
The sample row_sample: true and charged: falseno
A diagnosticAn errorCode and a messageno

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.

CodeWhat it means
FILTER_NOT_SUPPORTEDA filter value is not one Unstop actually honours. It was dropped and the rest of the run carried on.
NO_RESULTSThe search was valid and matched nothing.
BAD_URLA pasted link or id could not be read. Short /o/ links are the usual cause.
NOT_FOUNDThat opportunity id does not exist any more.
DETAIL_FAILEDThe listing row arrived but its own page did not. The row is kept without the organiser contact.
SERVER_ERROR, HTTP_ERRORUnstop 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

  1. Open Unstop Scraper and click Try for free.
  2. Pick one or more boards under What to scrape.
  3. Add keywords, a domain or a city to narrow it, or leave them empty for the whole board.
  4. Set Maximum results, then click Start.
  5. 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/XXXX links 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, payIsEstimate is false on every row, and payIsDisclosed says whether a figure exists at all.
  • Mostly India. Every in-person opportunity in the sample was in India, and eligibleCountries was empty on all 40 detail pages checked.

🧭 Which job scraper do you need?

If you wantUse
Hackathons, competitions, internships and jobs on UnstopThis one
Startup jobs from Wellfound, with the full descriptionWellfound Jobs Scraper
Jobs in Germany, Austria and SwitzerlandXING Jobs Scraper
Jobs in Germany, Austria, the UK, the Netherlands or BelgiumStepStone Jobs Scraper
Jobs in FranceHelloWork 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.