ICS to JSON
Parse an iCalendar (.ics) feed into JSON events.
POST
1 credit
/v1/convert/ics-to-json
curl -X POST "https://convert.toolkitapi.io/v1/convert/ics-to-json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"ics": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nSUMMARY:Team Sync\nDTSTART:20260420T150000Z\nDTEND:20260420T160000Z\nEND:VEVENT\nEND:VCALENDAR"}'
import httpx
resp = httpx.post(
"https://convert.toolkitapi.io/v1/convert/ics-to-json",
json={"ics": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nSUMMARY:Team Sync\nDTSTART:20260420T150000Z\nDTEND:20260420T160000Z\nEND:VEVENT\nEND:VCALENDAR"},
)
print(resp.json())
const resp = await fetch("https://convert.toolkitapi.io/v1/convert/ics-to-json", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({"ics": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nSUMMARY:Team Sync\nDTSTART:20260420T150000Z\nDTEND:20260420T160000Z\nEND:VEVENT\nEND:VCALENDAR"}),
});
const data = await resp.json();
console.log(data);
# See curl example
Response
200 OK
{
"events": [
{"summary": "Team Sync", "dtstart": "2026-04-20T15:00:00Z", "dtend": "2026-04-20T16:00:00Z"}
],
"count": 1
}
Description
Parse an iCalendar (.ics) feed into JSON events.
How to Use
1
1. POST a JSON body with `ics` (inline) or `url`.
2
2. Read `events[]` and `count` from the response.
About This Tool
Parses an iCalendar (`.ics`) feed into a JSON array of event objects. Standard event fields — summary, description, start/end time, location, organizer, attendees, recurrence rule — become keys in a JSON object.
Recurring events are represented with their `RRULE`; individual occurrences are not expanded.
Why Use This Tool
- Custom schedulers — Ingest public ICS feeds into a JSON-native app
- Calendar sync — Mirror an ICS feed into a database
- Analytics — Analyze event data programmatically
- Notifications — Build reminders off an ICS feed
Frequently Asked Questions
Are recurring events expanded?
No — the RRULE is returned as-is. Expand locally with a library like `rrule`.
Are timezones preserved?
Yes — DTSTART/DTEND retain their timezone identifier when present; UTC times end with `Z`.
What fields are extracted?
`summary`, `description`, `dtstart`, `dtend`, `location`, `organizer`, `attendees`, `rrule`, `uid`, and common extensions.
Start using ICS to JSON now
Get your free API key and make your first request in under a minute.