# Hackathon Finder: Upcoming Hackathons, Webinars & Tech Events (`bossless/hackathon-finder`) Actor

Find upcoming hackathons, workshops, webinars and tech conferences from Devfolio, Unstop, Hack Club and confs.tech in one clean list. Filter by keyword, online or in-person, location, dates, prizes and open registration. No login. Pay per event.

- **URL**: https://apify.com/bossless/hackathon-finder.md
- **Developed by:** [Alexander Daskalov](https://apify.com/bossless) (community)
- **Categories:** Developer tools, Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 event founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Hackathon Finder: Upcoming Hackathons, Webinars & Tech Events

Find **upcoming hackathons**, **workshops and webinars** and **tech conferences** from several public listings in one
clean, de-duplicated list: **Devfolio**, **Unstop**, **Hack Club Hackathons** and **confs.tech**. Filter by keyword or
theme, online vs in-person, location, date range, prizes and open registration, then export JSON, CSV or Excel or
call it as an API. No login, no API key, pay only per event delivered.

### What data can you get?

One record per event, with the same fields whatever the source:

| Field | Example | Notes |
|---|---|---|
| `title` | `DevNexus 2.0` | |
| `eventType` | `hackathon` | `hackathon`, `workshop` (workshops and webinars) or `conference` |
| `organiser` | `Indian Institute of Technology (IIT), Madras` | when the source publishes it (Unstop) |
| `startDate`, `endDate` | `2026-11-27T18:30:00+00:00` | ISO 8601; Unstop publishes only the end date |
| `registrationDeadline` | `2026-11-01T18:30:00+00:00` | Devfolio and Unstop |
| `registrationOpen` | `true` | Devfolio and Unstop |
| `mode` | `online` | `online`, `in-person` or `hybrid` |
| `city`, `state`, `country`, `venue` | `Kolkata`, `West Bengal`, `India` | |
| `prizes` | `["Winner: INR 20000", "1st Runner Up: INR 12000"]` | as listed |
| `totalPrize`, `prizeCurrency` | `32000`, `INR` | sum of cash prizes (Unstop) |
| `themes` | `["FinTech"]` | tracks, work areas or conference topics |
| `participantsCount` | `1233` | registrations, where published |
| `teamSizeMin`, `teamSizeMax` | `2`, `4` | |
| `description` | short plain text | up to 500 characters |
| `url`, `imageUrl` | event page, cover image | |
| `source`, `sourceId`, `alsoListedOn` | `devfolio`, `d957bc…`, `["unstop"]` | duplicates across sources are merged |
| `scrapedAt` | `2026-11-01T11:05:00+00:00` | |

Example record:

```json
{
  "title": "DevNexus 2.0",
  "eventType": "hackathon",
  "organiser": null,
  "startDate": "2026-11-27T18:30:00+00:00",
  "endDate": "2026-11-28T18:30:00+00:00",
  "registrationDeadline": "2026-11-01T18:30:00+00:00",
  "registrationOpen": true,
  "mode": "in-person",
  "city": "Kolkata",
  "state": "West Bengal",
  "country": "India",
  "venue": "Government College of Engineering and Leather Technology, Eastern Metropolitan Bypass, LB Block, Sector 3, Bidhannagar, Kolkata, West Bengal, India",
  "prizes": [],
  "totalPrize": null,
  "prizeCurrency": null,
  "themes": [],
  "participantsCount": 1233,
  "teamSizeMin": 2,
  "teamSizeMax": 4,
  "description": "Code Through the Night. Build Beyond the Fear.",
  "url": "https://devnexus2.devfolio.co/",
  "imageUrl": "https://assets.devfolio.co/hackathons/d957bc2099f945e99edfae0c2972bed9/assets/cover/194.png",
  "source": "devfolio",
  "sourceId": "d957bc2099f945e99edfae0c2972bed9",
  "alsoListedOn": [],
  "scrapedAt": "2026-11-01T11:22:39.725490+00:00"
}
```

### Which sources does it search?

| Source | What it adds |
|---|---|
| Devfolio | hackathons open for applications and upcoming ones, with registration window, team size, prize names, themes |
| Unstop | hackathons, workshops & webinars and conferences, with organiser, prizes and amounts, registrations, deadlines |
| Hack Club Hackathons | student-led hackathons worldwide (online, hybrid and in-person) |
| confs.tech | developer conferences, online and in-person, across 38 topics (open data, MIT licence) |

Only sources that allow automated access and need no login are used. Devpost, MLH, Eventbrite, Luma and Meetup are
**not** covered: their terms forbid scraping or commercial reuse, or need an API key. Webinars therefore come only
from Unstop's workshops & webinars listing.

### How much does it cost?

Pay per event delivered (`result`), plus a tiny start fee:

| Plan | Price per event | Per 1,000 events |
|---|---|---|
| Free / Bronze | $0.0020 | $2.00 |
| Silver | $0.0018 | $1.80 |
| Gold / Platinum / Diamond | $0.0015 | $1.50 |

The actor start costs $0.00005 per run. Set **Maximum results** (and the run's maximum cost) to cap what you pay;
events are delivered soonest first.

### How fast is it?

A run reads every selected source at once and finishes in seconds: on Apify (256 MB) a hackathon search over all sources (about 190 upcoming hackathons) took 7 s, and all three event types (420 events delivered) took 8 s. Most of a run is the one-off source download, so large result sets cost almost no extra time.

### How to find hackathons

1. Pick the **event types** (hackathons, workshops & webinars, tech conferences).
2. Optionally add **keywords** (`AI`, `web3`, `fintech`; a keyword must start a word, and keywords of up to three
   letters must be the whole word, so `AI` does not match "campaign"), choose **online** or **in-person**, a **location**
   (`India`, `Berlin`) and a **date range**, or keep only events with **prizes** or **open registration**.
3. Run it and download the dataset as JSON, CSV, Excel or via the API. Schedule it daily to catch new listings.

### Use Hackathon Finder with AI agents (MCP)

Add it to any MCP client through the Apify MCP server: `https://mcp.apify.com?tools=bossless/hackathon-finder`.
An agent can ask for, for example, `{"eventTypes": ["hackathon"], "keywords": ["AI"], "mode": "online", "maxResults": 20}`.

### Use the API from code

```bash
curl -X POST "https://api.apify.com/v2/acts/bossless~hackathon-finder/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"eventTypes": ["hackathon"], "keywords": ["AI"], "mode": "online", "maxResults": 20}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("bossless/hackathon-finder").call(run_input={
    "eventTypes": ["hackathon", "workshop"],
    "location": "India",
    "onlyRegistrationOpen": True,
    "maxResults": 50,
})
for event in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(event["startDate"], event["title"], event["url"])
```

### Ready-made tasks

- [Online AI hackathons](https://apify.com/bossless/hackathon-finder/examples/online-ai-hackathons): online and hybrid hackathons about AI, ML, LLMs and GenAI.
- [Hackathons in India open for registration](https://apify.com/bossless/hackathon-finder/examples/hackathons-in-india): Devfolio and Unstop hackathons you can still register for.
- [Online tech workshops, webinars and conferences](https://apify.com/bossless/hackathon-finder/examples/online-tech-webinars-conferences): online workshops & webinars and virtual tech conferences.

### FAQ

**Is this an official Devfolio, Unstop, Hack Club or confs.tech product?**
No. This is an independent tool and is not affiliated with or endorsed by Devfolio, Unstop, Hack Club or confs.tech.
It reads only their public listings.

**Why are there no Devpost, MLH, Eventbrite, Luma or Meetup events?**
Their terms of service forbid automated collection or commercial reuse, or require an API key. This actor only uses
sources that allow it.

**Does it find webinars?**
Yes, from Unstop's workshops & webinars listing (choose the "Workshops & webinars" event type). Online tech
conferences come from confs.tech and Unstop.

**Why is `startDate` empty for some events?**
Unstop's public listing gives the end date and the registration window but not the start date. Date filters use the
end date for those events.

**How are duplicates handled?**
The same event listed on two sources (same name, dates within a day of each other) is delivered once; `alsoListedOn` names the other sources.

**What if a source is down?**
The run still delivers events from the other sources and says in its status message which source could not be
reached. It fails only when every selected source is unreachable.

**Where does the conference data come from?**
From the open confs.tech conference data (tech-conferences/conference-data), published under the MIT licence.

# Actor input Schema

## `eventTypes` (type: `array`):

What to find: hackathons (Devfolio, Unstop, Hack Club), workshops and webinars (Unstop), tech conferences (confs.tech and Unstop).

## `sources` (type: `array`):

Listing sources to search. Leave all selected for the widest coverage; each source is only asked for the event types it lists.

## `keywords` (type: `array`):

Keep events whose title, organiser, themes or description contain ANY of these words (case-insensitive), e.g. AI, web3, fintech, Python. A keyword must start a word (robot finds Robotics); keywords of up to three letters must be the whole word (AI does not match campaign; plurals such as LLMs count). Leave empty for all.

## `mode` (type: `string`):

Online keeps online and hybrid events; in-person keeps in-person and hybrid events.

## `location` (type: `string`):

Keep events whose city, state, country or venue contains this text, e.g. India, Bengaluru, United States, Berlin. Online-only events have no location, so they are left out when this is set.

## `startDateFrom` (type: `string`):

Earliest start date (YYYY-MM-DD). Unstop publishes only the end date, which is used instead for its events.

## `startDateTo` (type: `string`):

Latest start date (YYYY-MM-DD).

## `onlyWithPrizes` (type: `boolean`):

Keep only events that list at least one prize.

## `onlyRegistrationOpen` (type: `boolean`):

Keep only events whose registration is open now (or, where a source has no registration status, whose deadline or start is still ahead).

## `maxResults` (type: `integer`):

Stop after this many events (soonest first). You pay per event delivered.

## Actor input object example

```json
{
  "eventTypes": [
    "hackathon"
  ],
  "sources": [
    "devfolio",
    "unstop",
    "hackclub",
    "confstech"
  ],
  "mode": "any",
  "onlyWithPrizes": false,
  "onlyRegistrationOpen": false,
  "maxResults": 20
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "eventTypes": [
        "hackathon"
    ],
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("bossless/hackathon-finder").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "eventTypes": ["hackathon"],
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("bossless/hackathon-finder").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "eventTypes": [
    "hackathon"
  ],
  "maxResults": 20
}' |
apify call bossless/hackathon-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bossless/hackathon-finder"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/86R2apchuoScgbVYU/builds/6VRaZYHeByvILHkud/openapi.json
