Devfolio APIdevfolio.co ↗
Search and filter hackathons from Devfolio by keyword, status, location, and date. Returns names, dates, locations, and registration details via one endpoint.
What is the Devfolio API?
The Devfolio Hackathons API exposes one endpoint — search_hackathons — that returns up to 50 hackathon records per request, each carrying 13+ fields including name, slug, tagline, start and end dates, online/offline status, and location data. You can run free-text queries matched against hackathon names and descriptions, or filter by application status when no query is provided.
curl -X POST 'https://api.parse.bot/scraper/ba5b840c-b804-4a04-ada0-30c1d7ebea88/search_hackathons' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"from": "0",
"size": "10",
"type": "application_open",
"query": "blockchain"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace devfolio-co-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Devfolio hackathons SDK — search and filter hackathons."""
from parse_apis.devfolio_co_api import Devfolio, HackathonStatus, InvalidInput
client = Devfolio()
# Search hackathons by keyword — results span all statuses.
for hackathon in client.hackathons.search(query="blockchain", limit=3):
print(hackathon.name, hackathon.starts_at, hackathon.themes)
# List hackathons with applications currently open.
first_open = client.hackathons.search(status=HackathonStatus.APPLICATION_OPEN, limit=1).first()
if first_open:
print(first_open.name, first_open.participants_count, first_open.is_online)
# Handle invalid input gracefully.
try:
client.hackathons.search(status=HackathonStatus.PAST, limit=5).first()
except InvalidInput as exc:
print(f"Invalid input: {exc}")
print("exercised: hackathons.search (keyword + status filter + error handling)")
Search hackathons by keyword or list them by status. When a query is provided, results are ranked by relevance across all hackathons regardless of status. When no query is provided, results are filtered by the type parameter (defaults to applications currently open). Results are paginated via from/size offsets.
| Param | Type | Description |
|---|---|---|
| from | integer | Zero-based offset for pagination. Use with size to page through results. |
| size | integer | Number of hackathons to return per request, between 1 and 50. |
| type | string | Status filter applied when no query is provided. Ignored when query is set. |
| query | string | Free-text search query matched against hackathon names and descriptions. When provided, the type filter is ignored and results span all statuses. |
{
"type": "object",
"fields": {
"from": "integer",
"size": "integer",
"total": "integer",
"hackathons": "array of hackathon objects with uuid, name, slug, tagline, type, starts_at, ends_at, is_online, city, state, country, location, themes, participants_count, team_size, team_min, projects_submitted, cover_img, logo, subdomain, verified"
},
"sample": {
"data": {
"from": 0,
"size": 3,
"total": 19,
"hackathons": [
{
"city": "Bengaluru",
"logo": "https://assets.devfolio.co/hackathons/9ca9be8320484be0840ad2f4771bc4f9/assets/logo/81.png",
"name": "Build with Gemma",
"slug": "build-with-gemma-bengaluru-ai-sprint",
"type": "HACKATHON",
"uuid": "9ca9be8320484be0840ad2f4771bc4f9",
"state": "Karnataka",
"themes": [
"FinTech",
"AI/ML"
],
"country": "India",
"ends_at": "2026-07-18T15:00:00+00:00",
"tagline": "Bengaluru AI Sprint",
"location": "Ramaiah Institute of Technology, MSRIT Post, M S R Nagar, Mathikere, Bengaluru, Karnataka, India",
"team_min": 2,
"verified": true,
"cover_img": "https://assets.devfolio.co/hackathons/9ca9be8320484be0840ad2f4771bc4f9/assets/cover/957.png",
"is_online": false,
"starts_at": "2026-07-18T03:30:00+00:00",
"subdomain": "build-with-gemma-bengaluru-ai-sprint",
"team_size": 4,
"participants_count": 738,
"projects_submitted": 0
}
]
},
"status": "success"
}
}About the Devfolio API
What the API Returns
The search_hackathons endpoint returns a paginated list of hackathon objects sourced from Devfolio. Each object includes uuid, name, slug, tagline, type, starts_at, ends_at, is_online, city, state, country, and location. The response envelope includes from, size, and total so you can track pagination position and total result count.
Querying and Filtering
The endpoint accepts two mutually exclusive modes. When the query parameter is set, results are ranked by relevance across all hackathons on the platform regardless of their status — the type filter is ignored in this mode. When query is omitted, the type parameter controls which status bucket is returned; the default shows hackathons with applications currently open. Pagination is controlled via from (zero-based offset) and size (1–50 per page).
Pagination Behavior
Use from and size together to page through large result sets. Set from=0 and size=50 for the first page, then increment from by size for subsequent pages. The total field in the response tells you how many records match your query or filter, so you can calculate the number of pages needed without over-fetching.
Coverage Scope
The API covers public hackathon listings on Devfolio, including both online and in-person events across multiple countries. Location fields (city, state, country) are populated for physical events; is_online distinguishes remote hackathons. Individual project submissions, participant profiles, team data, and prize details are not part of the current response shape.
The Devfolio API is a managed, monitored endpoint for devfolio.co — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when devfolio.co changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official devfolio.co API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a hackathon discovery feed filtered to open applications for a developer community newsletter
- Track upcoming hackathon dates using
starts_atandends_atfields to surface events within a custom date window - Aggregate online-only hackathons by checking
is_onlinefor participants who cannot travel - Search hackathons by technology keyword using the
queryparameter to find themed events (e.g. 'AI', 'blockchain') - Page through the full Devfolio catalog using
fromandtotalto build a local index for a search tool - Display location-specific hackathons by filtering on
cityorcountryvalues returned in results - Monitor new hackathon listings by regularly polling
search_hackathonswith a status type filter and comparinguuidvalues
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Devfolio have an official developer API?+
How does the `type` filter behave, and when is it ignored?+
query parameter is provided, type is ignored and results are ranked by relevance across all hackathons on the platform. When query is omitted, type controls the status bucket shown — the default returns hackathons with applications currently open.Does the API return hackathon project submissions or prize details?+
Are there any limitations on location data for online hackathons?+
is_online is true, city, state, and country fields may be empty or reflect the organizer's registered location rather than a meaningful event venue. Physical events populate these fields more consistently.Can I retrieve a single hackathon's full detail page — schedule, sponsors, or FAQs?+
search_hackathons, returning fields like slug, tagline, starts_at, and ends_at. Granular detail pages with sponsor lists, schedules, or organizer FAQs are not exposed. You can fork this API on Parse and revise it to add a detail endpoint using the slug field.