itch.io Game Jam Calendar: .ics, Alerts, No Login
Pricing
from $1.40 / 1,000 jams
itch.io Game Jam Calendar: .ics, Alerts, No Login
Get the upcoming and running game jams on itch.io as data: title, link, start, end, voting end, length, status and number joined. Also writes a calendar file (.ics) and a ready-to-paste digest, and can post only the new jams to your Discord. No login or API key.
Pricing
from $1.40 / 1,000 jams
Rating
0.0
(0)
Developer
Quiet Robots
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
🎮 What does itch.io Game Jam Calendar do?
It reads the game jam calendar on itch.io and hands it to you as data: every upcoming and running jam with its title, link, start, deadline, end of voting, length, status and number of people joined. itch.io shows this calendar on a page but offers no export, feed or calendar link for it.
- Data, a calendar file and a digest in one run: rows for spreadsheets and automations, an
.icsfile for Google Calendar or Outlook, and a short text ready to paste into a newsletter or a Discord post. - New-jam alerts: put it on a schedule with "only new" switched on and each run returns just the jams that appeared since the last one, optionally posted to your own Discord channel.
- Filters and sorting built in: starting in the next N days, running now, minimum joined, featured only, words in the title, length, top N by any column.
- No login, no API key, no proxy. One request to itch.io per run.
- $0.01 per run plus $2 per 1,000 jams. A run that finds nothing new costs one cent.
Press Start with the example input to see it work. That run returns up to 100 jams and costs about $0.21, well inside the free plan's monthly credit.
🚀 How to get itch.io game jams as data
- Press Start. The example input returns upcoming and running jams that at least 10 people have joined, soonest first.
- Open the Output tab: the jams as a table, plus links to the calendar file and the digest.
- Download the rows as JSON, CSV or Excel, or read them through the Apify API.
The digest of a run looks like this:
**Game jams on itch.io**: 2 jams, 2026-10-12 (times in Europe/Warsaw)**Starting soon**- [SCREAM JAM 2026](https://itch.io/jam/scream-jam-2026): starts Sat 17 Oct, 00:00, runs 7 days, 916 joined**In voting**- [Mini Jam 221: Autumn](https://itch.io/jam/mini-jam-221-autumn): voting ends Fri 16 Oct, 06:00, 1,273 joined
💡 What you can use the game jam data for
- Discord servers and bots: post a weekly "jams starting this week" list, or an alert whenever a new jam shows up, without keeping a scraper alive.
- Newsletters and blogs: paste the digest, or build your own layout from the rows.
- Asset sellers, tool makers and sponsors: find the big jams early (sort by number joined) and the ones for your engine or genre (title filter).
- Your own calendar: import the
.icsfile and see the jams next to everything else. - Tracking: run it daily and keep the rows to see how sign-ups for a jam grow.
📥 Input
Every field is optional.
| Field | What it does |
|---|---|
| Which jams | Upcoming, running now, in voting, finished. Default: upcoming and running. |
| Starting within | Only jams that start in the next N days. |
| Minimum joined | Only jams that at least this many people have joined. |
| Featured jams only | Only the jams itch.io features at the top of its calendar. |
| Title contains / does not contain | Words or phrases, any capitalisation: godot, horror, pixel. |
| Shortest / longest length | In days; decimals work (0.5 is 12 hours). |
| Sort by, direction | What happens next (default), start, deadline, end of voting, length or number joined; ascending or descending. |
| Maximum jams | Keep only the top N after sorting. Also your price cap. |
| Time zone | For the local-time columns and the digest, e.g. Europe/Warsaw. |
| Only jams new since the last run | Return a jam once, then never again. For scheduled alerts. |
| Memory name | Separate memories for alerts with different filters. |
| Discord webhook URL | Posts the digest to your own Discord channel. |
The ten biggest jams starting this week, with times for New York:
{"statuses": ["upcoming"],"startsWithinDays": 7,"sortBy": "joined","sortDirection": "desc","maxItems": 10,"timeZone": "America/New_York"}
📤 Output
One row per jam:
{"id": 419594,"title": "SCREAM JAM 2026","url": "https://itch.io/jam/scream-jam-2026","status": "upcoming","startsAt": "2026-10-16T22:00:00Z","endsAt": "2026-10-23T22:00:00Z","votingEndsAt": "2026-10-30T22:00:00Z","startsAtLocal": "2026-10-17 00:00","endsAtLocal": "2026-10-24 00:00","votingEndsAtLocal": "2026-10-30 23:00","timeZone": "Europe/Warsaw","lengthDays": 7,"lengthHours": 168,"daysUntilStart": 4.5,"daysLeft": null,"hasVoting": true,"votingDays": 7,"joined": 916,"featured": false,"checkedAt": "2026-10-12T09:41:18Z"}
| Field | Meaning |
|---|---|
id | itch.io's number for the jam. Stays the same if the jam is renamed. |
status | upcoming, running (open for entries), voting (closed, being rated) or finished. |
startsAt, endsAt, votingEndsAt | Start, submission deadline and end of voting, in UTC. votingEndsAt is null for jams without voting. |
…Local, timeZone | The same three times in the time zone you chose, as YYYY-MM-DD HH:MM. |
lengthDays, lengthHours | From start to deadline. |
daysUntilStart | For upcoming jams. |
daysLeft | Until the deadline for running jams; until the end of voting for jams in voting. |
hasVoting, votingDays | Whether there is a voting period, and how long it is. |
joined | People who have joined the jam so far. |
featured | True for the jams itch.io puts at the top of its calendar. |
Two files are saved next to the rows, both linked from the run's Output tab:
calendar.ics: one event per jam, from start to deadline, with the link and the end of voting in the description.digest.md: the text shown above, grouped into starting soon, running now, in voting and just finished.
🔔 How to get alerts for new game jams
- Set your filters, switch on Only jams new since the last run, and save the input as a task.
- Put the task on a schedule, for example daily.
- Optional: paste a Discord webhook URL and each run posts the new jams to that channel. In Discord: channel settings > Integrations > Webhooks > New Webhook > Copy Webhook URL.
The first run returns everything that matches; every later run returns only what was added since. A run with nothing new returns no rows, posts nothing and costs $0.01.
Running several alerts with different filters? Give each its own Memory name, otherwise a jam returned by one alert counts as already seen by the others.
In Discord, times appear in each reader's own time zone and no one is pinged, whatever a jam's title contains. A post holds about 70 jams at most (five Discord messages); the rest are counted in a closing line.
📅 How to add itch.io game jams to Google Calendar or Outlook
Download calendar.ics from the run's Output tab and import it:
- Google Calendar: Settings > Import & export > Import.
- Outlook: Add calendar > Upload from file.
- Apple Calendar: File > Import.
Each jam keeps the same event ID in every run, so calendar apps that match events by ID update them when you import a newer file.
For a calendar that refreshes itself, schedule a task and subscribe your calendar app to the last run's file ("From URL" in Google Calendar). Keep the link private: it contains your token.
https://api.apify.com/v2/actor-tasks/YOUR_TASK_ID/runs/last/key-value-store/records/calendar.ics?status=SUCCEEDED&token=YOUR_TOKEN
Leave "only new" off for that task, so the file always holds the whole calendar.
💰 Pricing
You pay for each run and for each jam it returns. Jams removed by your filters, or by "only new", cost nothing.
| Your Apify plan's discount tier | Calendar check (per run) | Per 1,000 jams returned |
|---|---|---|
| Free | $0.01 | $2.00 |
| Bronze | $0.01 | $1.80 |
| Silver | $0.01 | $1.60 |
| Gold | $0.01 | $1.40 |
- The example input: up to 100 jams = $0.01 + $0.20 = $0.21.
- A daily alert on a day with 5 new jams = $0.02; on a day with none = $0.01.
- Everything itch.io lists (about 600 jams) = about $1.20.
- Apify's free plan includes $5 of credit a month.
- Starting a run costs $0.00005. A run that cannot read itch.io charges nothing else.
- If you set a maximum charge for the run, the Actor returns only as many jams as that covers.
🔌 Use it from the API, an automation or an AI agent
Start a run and get the rows back in one call (replace YOUR_TOKEN with your Apify API token):
curl -X POST "https://api.apify.com/v2/acts/quiet-robots~itch-io-game-jam-calendar/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"statuses": ["upcoming"], "startsWithinDays": 7, "minJoined": 50}'
The same with the JavaScript client, reading the digest as well:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('quiet-robots/itch-io-game-jam-calendar').call({statuses: ['upcoming'],startsWithinDays: 7,minJoined: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const digest = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('digest.md');console.log(items.length, digest.value);
- Make, Zapier, n8n and others: through Apify's integrations.
- AI assistants: through Apify's MCP server an assistant can call the Actor as a tool and answer "which game jams start this weekend?" from the rows.
⚠️ Limits and good to know
- itch.io only. Jams hosted elsewhere (Ludum Dare's own site, Global Game Jam) appear only if they also have an itch.io page.
- What the calendar carries, nothing more. No host, theme, rules, prizes or entry counts: those are on each jam's own page, which this Actor does not open.
- The list is itch.io's. It holds about 600 jams at a time: upcoming, running, in voting and recently finished. Older jams are not in it. Unlisted jams are not in it.
- Anyone can create a jam, so the list has tiny and test entries, and now and then a typo in a date (a start in the year 0206, an end in 2069). "Minimum joined" and "Longest length" clear most of that out.
- Titles are itch.io's own, including jams for adult games. To keep some out of a public post, list the words in Title does not contain.
- "Only new" keeps a small memory in a key-value store named
itch-jam-calendar-memoryin your own Apify account: the IDs of the jams already returned. Delete the store to start over. - If posting to Discord fails, the run ends as failed and the memory is not updated, so the next run returns and posts those jams again.
❓ FAQ
Does itch.io have an API or a feed for game jams?
Not for the jam calendar. itch.io's page shows it, with no export, RSS feed or calendar link.
This Actor reads the same list that page is drawn from and returns it as JSON, CSV, Excel or
.ics.
Do I need an itch.io account or API key?
No. You only need an Apify account.
How current is the data?
Each run reads itch.io at that moment. joined and status are as of checkedAt.
Can I get only game jams for Godot, Unity or a certain genre?
When the word is in the jam's title, yes: put godot or horror into Title contains. The
calendar has no tags or descriptions, so a jam that mentions its engine only on its own page
will not match.
What counts as "new"?
A jam this Actor has not returned before under the same memory name. A jam that existed earlier but only now passes your filters (say, it reached your "Minimum joined") counts as new too, which is usually what an alert wants.
Can it post to Slack, Telegram or email instead of Discord?
Not directly. Use Apify's integrations to send the rows or the digest wherever you need them after each run.
What exactly does it read from itch.io?
One public page per run, https://itch.io/jams, without logging in. It returns facts about public events: names, dates and counts. It collects no personal data.
💬 Support
Is a jam missing, a time wrong, or do you need another jam site? Open an issue on the Actor's Issues tab and include the jam's link.
🤖 More from Quiet Robots
- Bulk Domain Availability Checker: paste a list of names and see which domains are free, confirmed at the registry.