
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape Unstop jobs, internships, hackathons, competitions, quizzes, scholarships, workshops and conferences by type, keyword, location and filters, or from Unstop links. Get deadlines, prizes, salary or stipend, eligibility, skills, registrations and full descriptions.
Get jobs, internships, hackathons, competitions, quizzes, scholarships, workshops, conferences and cultural events from Unstop (formerly Dare2Compete) as clean, structured data. Every result comes with its deadline, prizes, salary or stipend, eligibility, skills, registration count and the full description. It reads Unstop's own public data feed, so runs are fast and cheap, and you don't need a login.
| Field | What it does |
|---|---|
opportunityTypes | jobs, internships, hackathons, competitions, quizzes, scholarships, workshops, conferences, cultural-events, hiring-challenges or all |
searchKeywords | Words or phrases to search for, one per line |
startUrls | Unstop listing links (https://unstop.com/hackathons) or opportunity links (https://unstop.com/jobs/<name>-<id>, https://unstop.com/o/<code>) |
maxResults | Total results to save (0 = no limit) |
status | open (default), closed, expired, recent or any |
locations | Indian cities or states, for example Bangalore, Mumbai, Delhi |
datePosted | Past 1, 7, 30, 90, 180 or 365 days |
userType | students, fresher, corporate or school students |
workType, jobTiming, paidOrUnpaid, quickApplyOnly | Job and internship filters |
registrationFee, eventMode | Event filters (free or paid, online, offline or hybrid) |
sortBy | relevance, latest, prize, deadline or salary |
includeDetails | Adds rounds, event start date, organizer website, apply link and prize summary |
{
"opportunityTypes": ["internships"],
"searchKeywords": ["marketing"],
"locations": ["Bangalore", "Mumbai"],
"workType": ["wfh", "hybrid"],
"paidOrUnpaid": "paid",
"sortBy": "salary",
"maxResults": 100
}
One row per opportunity. The main fields:
| Field | Description |
|---|---|
title, opportunityType, subtype | What it is |
url, shortUrl | Links to the opportunity on Unstop |
organizer, organizerUrl, organizerLogoUrl | Who hosts it |
status, deadline, deadlineText, registrationStartDate, endDate | Dates and whether registrations are open |
mode, location, cities, state, country | Where it happens |
registrationFee, registrationFeeAmount, prize, totalPrizeValue, prizeCurrency, prizes | Fee (and its amount in INR when paid) and rewards |
registrationCount, viewsCount, teamSizeMin, teamSizeMax | Popularity and team size |
eligibility, categories, tags, workFunctions | Who can apply, topics and skills |
workType, jobTiming, salary, salaryMin, salaryMax, salaryCurrency, salaryPeriod, experienceMinYears | Job and internship details |
description, descriptionHtml | Full description |
rounds, eventStartDate, organizerWebsite, externalApplyUrl, prizeSummary | With Include full opportunity record |
Example (description shortened):
{
"id": 1770868,
"title": "Marketing Internship",
"opportunityType": "internships",
"url": "https://unstop.com/internships/marketing-internship-quickscholars-1770868",
"organizer": "Quickscholars",
"organizerUrl": "https://unstop.com/c/quickscholars-1945523",
"status": "live",
"deadline": "2026-10-29T18:44:26+05:30",
"deadlineText": "7 days left",
"mode": "online",
"registrationFee": "Free",
"registrationCount": 285,
"eligibility": ["Postgraduate", "Undergraduate", "Management"],
"tags": ["Marketing Communications", "Social Media Marketing (SMM)", "Content Writing"],
"workType": "Work From Home",
"jobTiming": "Part Time",
"salary": "₹25,000 - ₹30,000 / month",
"salaryMin": 25000,
"salaryMax": 30000,
"salaryCurrency": "INR",
"salaryPeriod": "monthly",
"description": "About the Company\nQuickscholars Edtech Pvt. Ltd. is an education technology company...",
"scrapedAt": "2026-10-21T18:34:29Z"
}
A hackathon row also carries the prizes:
{
"title": "Build with Agora - BLR",
"opportunityType": "hackathons",
"organizer": "KNOTiC",
"mode": "offline",
"location": "Bangalore, Karnataka",
"prize": "$800",
"totalPrizeValue": 1600,
"prizeCurrency": "USD",
"prizes": [
{"rank": "Winner", "cash": 800, "currency": "USD", "cashText": "$800", "certificate": true},
{"rank": "1st Runner Up", "cash": 500, "currency": "USD", "cashText": "$500", "certificate": true}
],
"teamSizeMin": 1,
"teamSizeMax": 1,
"eligibility": ["All"]
}
You pay $2.50 per 1,000 opportunities saved ($0.0025 each), plus the small platform usage of the run (compute and proxy traffic). Runs are light: one request returns up to 50 opportunities. Example: 1,000 opportunities cost about $2.51: $2.50 in result fees plus about one cent of usage (measured on our test runs). Turning on the full opportunity record does not change the result price. You can cap any run with a maximum total charge, and the scraper stops cleanly when it is reached.
Is it legal to scrape Unstop? The scraper only collects public information that Unstop shows to every visitor without logging in. Check that your use of the data respects Unstop's terms and the data protection rules that apply to you.
Do I need an Unstop account or a proxy? No account is needed. The default datacenter proxy works well. If Unstop starts refusing requests, the run moves to residential exits in India by itself.
How many results can I get? As many as Unstop lists. Set Max results to 0 for no limit. Unstop pages through at most 10,000 results for one search, so very broad searches (for example all jobs with any status) stop there. Split them by status, keyword, type or filter to reach more.
Why is a field empty?
Unstop doesn't show every field for every opportunity. For example, jobs rarely have prizes, events have no salary, and companies can hide the salary. Empty fields come back as null or an empty list.
Can I run it on a schedule or through the API? Yes. Schedule it daily to catch new opportunities, and use the API or integrations to send the results to Google Sheets, Slack, webhooks or your database.
I used a similar actor on another platform. Will my input work?
Mostly yes. opportunityTypes, startUrls and maxResults work the same way, and a single searchKeyword string is accepted too.
unstop.com/c/...), user profiles, courses and mentor listings are not covered.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
opportunityTypesarrayOptionalOpportunity types
Which kinds of opportunities to collect. Pick one or more. With several types the result limit is shared between them. Leave empty when you only paste URLs below (a keyword alone searches all types).
searchKeywordsarrayOptionalSearch keywords
Optional words or phrases to search for, one per line (for example "data analyst", "marketing", "AI"). Each keyword is searched in every selected type.
startUrlsarrayOptionalUnstop URLs
Optional Unstop links: listing pages (for example https://unstop.com/hackathons or https://unstop.com/internships?job_type=wfh, filters in the link are kept) or single opportunity pages (https://unstop.com/jobs/- or short links https://unstop.com/o/).
maxResultsintegerOptionaldefault 20Max results
How many opportunities to save in total across all types, keywords and URLs. 0 means no limit. Unstop pages through at most 10,000 results per single search; narrow a bigger search with a status, keyword or filter.
statusenumOptionaldefault "open"Status
Open: registrations still open (the site's default). Closed or expired: registrations ended. Recent: newest first, open or ended. Any: no status filter.
locationsarrayOptionalLocations
Indian cities or states, one per line (for example Bangalore, Mumbai, Delhi, Pune). Jobs and internships use Unstop's own location filter; other types keep opportunities whose venue is in one of these places.
datePostedenumOptionaldefault "any"Date posted
Only opportunities posted within this period.
userTypeenumOptionaldefault "any"Who can apply
Only opportunities open to this group.
workTypearrayOptionalWork type (jobs and internships)
In office, work from home, hybrid or field work. Applies to jobs and internships.
jobTimingarrayOptionalTiming (jobs and internships)
Full time, part time and so on. Applies to jobs and internships.
paidOrUnpaidenumOptionaldefault "any"Paid or unpaid (jobs and internships)
Only paid (salary or stipend) or only unpaid positions.
quickApplyOnlybooleanOptionaldefault falseQuick apply only (jobs and internships)
Only positions you can apply to in one click on Unstop.
registrationFeeenumOptionaldefault "any"Registration fee (events)
Free or paid registration. Applies to hackathons, competitions, quizzes, workshops, conferences and other events.
eventModeenumOptionaldefault "any"Event mode (events)
Online, offline (in person) or hybrid. Applies to hackathons, competitions, quizzes, workshops, conferences and other events.
sortByenumOptionaldefault "relevance"Sort by
Order of results. Prize, deadline and salary sorting work for the types where Unstop offers them.
includeDetailsbooleanOptionaldefault falseInclude full opportunity record
Also load each opportunity's own record: rounds and timeline, event start date, organizer website, external apply link and prize summary. One extra request per result, so runs take a little longer.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter proxies work for Unstop. If requests are refused, the run moves to residential exits in India by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | number | null | Unstop opportunity id |
| title | string | null | Opportunity title |
| opportunityType | string | null | jobs, internships, hackathons, competitions, quizzes, scholarships, workshops, conferences or cultural-events |
| subtype | string | null | Unstop's subtype (for example online_coding_challenge, case_competition) |
| url | string | null | Opportunity page on Unstop |
| shortUrl | string | null | Short link |
| organizer | string | null | Company, college or organization hosting it |
| organizerId | number | null | Organizer id |
| organizerUrl | string | null | Organizer page on Unstop |
| organizerLogoUrl | string | null | Organizer logo |
| status | string | null | live, closed or upcoming |
| registrationOpen | boolean | null | Registrations are open |
| deadline | string | null | Registration deadline (ISO 8601, India time) |
| deadlineText | string | null | Time left as shown on the site (for example '5 days left') |
| registrationStartDate | string | null | Registrations open from |
| endDate | string | null | Opportunity end date |
| mode | string | null | online, offline or hybrid |
| location | string | null | Venue or job location(s) |
| cities | array | null | Job or internship cities |
| state | string | null | State of the venue |
| country | string | null | Country of the venue |
| registrationFee | string | null | Free or Paid |
| registrationFeeAmount | number | null | Registration fee amount in INR when the registration is paid |
| prize | string | null | Top cash prize with currency symbol |
| totalPrizeValue | number | null | Sum of the cash prizes in the top prize's currency |
| prizeCurrency | string | null | Currency of the prizes (INR, USD...) |
| prizes | array | null | Every prize: rank, cash, currency, certificate, pre-placement interview or offer |
| registrationCount | number | null | Registrations or applications so far |
| viewsCount | number | null | Page views |
| teamSizeMin | number | null | Minimum team size |
| teamSizeMax | number | null | Maximum team size |
| eligibility | array | null | Who can apply (Undergraduate, Fresher, Engineering Students...) |
| categories | array | null | Topic categories |
| tags | array | null | Skills and topic tags |
| workFunctions | array | null | Job functions (jobs and internships) |
| workType | string | null | In Office, Work From Home, Hybrid or Field Work |
| jobTiming | string | null | Full Time, Part Time, Contract... |
| salary | string | null | Salary or stipend as text |
| salaryMin | number | null | Minimum salary or stipend |
| salaryMax | number | null | Maximum salary or stipend |
| salaryCurrency | string | null | Salary currency |
| salaryPeriod | string | null | monthly, yearly... |
| salaryDisclosed | boolean | null | The salary is shown |
| paidOrUnpaid | string | null | paid or unpaid |
| experienceMinYears | number | null | Minimum experience in years |
| experienceMaxYears | number | null | Maximum experience in years |
| description | string | null | Full description as plain text |
| descriptionHtml | string | null | Full description HTML |
| bannerImageUrl | string | null | Listing image |
| festival | string | null | College festival it belongs to |
| updatedAt | string | null | Last updated |
| approvedAt | string | null | Published on Unstop |
| scrapedAt | string | null | When it was scraped (UTC) |
| rounds | array | null | Rounds and timeline (full record) |
| eventStartDate | string | null | Event start date (full record) |
| organizerWebsite | string | null | Organizer website (full record) |
| externalApplyUrl | string | null | External registration link (full record) |
| prizeSummary | string | null | Prize summary text (full record) |
| eligibleCountries | array | null | Countries eligible (full record) |
| seoDescription | string | null | Short summary (full record) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Opportunity | One saved Unstop opportunity (job, internship, hackathon, competition, quiz, scholarship, workshop, conference or event). | $0.0025 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/unstop-scraper').call({
"opportunityTypes": [
"jobs",
"internships"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/unstop-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/unstop-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.