itch.io Game Jam Calendar: .ics, Alerts, No Login avatar

itch.io Game Jam Calendar: .ics, Alerts, No Login

Pricing

from $1.40 / 1,000 jams

Go to Apify Store
itch.io Game Jam Calendar: .ics, Alerts, No Login

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

Quiet Robots

Maintained by Community

Actor 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 .ics file 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

  1. Press Start. The example input returns upcoming and running jams that at least 10 people have joined, soonest first.
  2. Open the Output tab: the jams as a table, plus links to the calendar file and the digest.
  3. 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 .ics file 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.

FieldWhat it does
Which jamsUpcoming, running now, in voting, finished. Default: upcoming and running.
Starting withinOnly jams that start in the next N days.
Minimum joinedOnly jams that at least this many people have joined.
Featured jams onlyOnly the jams itch.io features at the top of its calendar.
Title contains / does not containWords or phrases, any capitalisation: godot, horror, pixel.
Shortest / longest lengthIn days; decimals work (0.5 is 12 hours).
Sort by, directionWhat happens next (default), start, deadline, end of voting, length or number joined; ascending or descending.
Maximum jamsKeep only the top N after sorting. Also your price cap.
Time zoneFor the local-time columns and the digest, e.g. Europe/Warsaw.
Only jams new since the last runReturn a jam once, then never again. For scheduled alerts.
Memory nameSeparate memories for alerts with different filters.
Discord webhook URLPosts 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"
}
FieldMeaning
iditch.io's number for the jam. Stays the same if the jam is renamed.
statusupcoming, running (open for entries), voting (closed, being rated) or finished.
startsAt, endsAt, votingEndsAtStart, submission deadline and end of voting, in UTC. votingEndsAt is null for jams without voting.
…Local, timeZoneThe same three times in the time zone you chose, as YYYY-MM-DD HH:MM.
lengthDays, lengthHoursFrom start to deadline.
daysUntilStartFor upcoming jams.
daysLeftUntil the deadline for running jams; until the end of voting for jams in voting.
hasVoting, votingDaysWhether there is a voting period, and how long it is.
joinedPeople who have joined the jam so far.
featuredTrue 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

  1. Set your filters, switch on Only jams new since the last run, and save the input as a task.
  2. Put the task on a schedule, for example daily.
  3. 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 tierCalendar 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-memory in 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