Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Unstop Scraper icon

Unstop Scraper

Scrape Unstop opportunities by board, domain, status, city or keyword. Get organiser, eligibility, deadline, prize money and registrations. $2.50 per 1,000.

204 runs on Apify $0.0025 per opportunity ($2.5 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust listing, searchQueries, startUrls (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0025 per opportunity = $2.5 per 1,000

You are charged forWhenPrice
Opportunity returnedCharged once per genuine Unstop opportunity: title, organiser, kind (hackathon, competition, quiz, internship, job, scholarship, workshop, conference, cultural event), eligibility tags, registration deadline, prize money, stipend or salary with a disclosure flag, registration and view counts, city or online flag, team size, skills and the opportunity URL. Sample rows, diagnostics, failed requests, empty runs and rows dropped by the city filter are never charged.$0.0025

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-09, and they are what you are actually charged.

Inputs

FieldWhat it doesType
listingUnstop's opportunity boards. Live counts measured on 2026-08-08: jobs 1,170 · internships 861 · competitions 275 · hackathons 111 · cultural events 43 · workshops 42 · quizzes 38 · hiring challenges 28 · conferences 17 · scholarships 6. Two boards are supergroups: 'Competitions' (275) also carries all 111 hackathons and all 38 quizzes, and 'all' (377) is Competitions plus workshops, conferences and cultural events, it does NOT include jobs, internships or scholarships. Pick several and each is walked in turn; every row carries a plain 'kind' field (hackathon, competition, quiz, internship, job, scholarship, workshop, conference, cultural-event) so duplicates are easy to see.array
searchQueriesFree-text searches, exactly as you would type them into Unstop's search box: a topic ("machine learning"), a technology ("blockchain"), or an organiser ("Flipkart"). Each keyword is run separately against every board you selected. Leave empty to take everything that matches the filters below.array
startUrlsPaste full Unstop opportunity URLs, for example https://unstop.com/hackathons/evil-corp-ctf-v2-1733381, or just the numeric id (1733381). Each is fetched directly with full detail, including the organiser's contact email. Short unstop.com/o/XXXX links do not carry the id and are not supported.array
statusLive = registration is open right now. Expired = the deadline has passed (that archive is large: 5,893 hackathons against 111 live). Closed = the organiser closed registration early. Anything else is refused, because Unstop answers HTTP 200 with the ENTIRE archive for a status it does not recognise.string
categoryUnstop's domain taxonomy. These 17 values are the complete verified set: 150+ other plausible slugs ("marketing", "data-science", "case-study", "web-development") were tested against the live API and every one of them is silently ignored, returning the whole unfiltered corpus. Only the values in this list actually filter anything.string
regionOnline events run remotely; offline events have a venue and fill in city, state and country. Measured on 2026-08-08: 106 of the 275 live competitions are offline, held in cities such as Pune, Indore and Guwahati.string
citiesIndian cities such as "Pune", "Delhi", "Bangalore", "Mumbai". Matched against each row's city and state. Unstop has no working server-side city filter, location={city} is accepted and then silently ignored, so this is applied here after the rows arrive, and rows dropped by it are NEVER charged for. Best combined with "In person only".array
workModeHow the role is worked. Measured on 2026-08-08 across 861 live internships: 441 work-from-home. Ignored on competition-style boards.string
employmentTypeFull time, part time or contract. Measured on 2026-08-08 across 1,170 live jobs: 1,152 full time, 5 part time.string
paidOnlyMeasured on 2026-08-08: 630 of 861 live internships are paid, the rest are explicitly unpaid. Careful. Unstop treats any value it does not recognise as "paid", so only these two are allowed through.string
workingDaysMeasured on 2026-08-08: 799 of 1,170 live jobs are 5 days a week.string
eligibleForUnstop's own eligibility buckets. Measured on 2026-08-08 across 861 live internships: 515 are open to freshers. Across 1,170 live jobs: 992 to working professionals, 32 to college students.string
postedWithinDaysOnly opportunities published in the last N days. Measured on 2026-08-08: 512 of 861 live internships were posted in the past week.string
teamSizeSolo entries, pairs, or teams of three and up. Only meaningful on competition-style boards; on jobs it returns nothing.string
entryFeeFree to enter, or a paid entry. Only meaningful on competition-style boards.string
skillOne skill tag, spelled the way Unstop spells it, this one IS case sensitive. "Python" returned 93 live jobs on 2026-08-08; "python" returned 0.string
sortByNewest first is Unstop's default. Prize money and stipend/salary sort by the published figure; opportunities with no figure sink to the bottom.string
sortDirectionWhich end of the sort to start from. Only used when "Sort by" is set.string
maxItemsStop after this many opportunities across every board and keyword. You are charged per opportunity returned, so this is your spending cap. Unstop lets any single search reach its first 10,000 results; past that, split the run with a domain, a status or a keyword.integer
includeDetailsReads each opportunity's own page for the organiser's contact email and phone, the round schedule, the start date and the live participant count. Measured over 40 live opportunities on 2026-08-08: an email on 30, a phone number on 18, a round schedule on 25, a participant count on 40. It costs one extra request per row (about 100 ms) and nothing extra in money. Turn it off for the fastest possible listing-only run.boolean
includeDescriptionHtmlEvery row already carries descriptionText, the plain-text version. Switch this on to also keep descriptionHtml, the organiser's original markup. It makes the dataset roughly three times larger.boolean
detailConcurrencyHow many opportunity pages to read at once when "Fetch the organiser's contact details" is on. 8 measured 40 pages in 4.0 seconds with no throttling.integer
egressModeUnstop's API is open, fast and unmetered from anywhere: 24-72 ms from the plain container address against 600-2,000 ms through a proxy, and identical results from three different addresses. Leave this on Automatic unless you have a reason not to.string

What you get

A structured dataset — each result includes fields like:

titlekindorganiserNameisOnlinecityregistrationDeadlinedaysLeftprizeTopCashpayMinpayMaxregistrationCounturl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

1 ready-to-run use cases

Unstop Hackathons Still Open

Find hackathons on Unstop that are still open to enter: title, organiser, deadline, prize and link.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

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 [email protected], 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 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.