For Agents
Read top CTF team rankings, upcoming and past competition events, and per-year results from CTFtime. Useful for agents that recommend CTFs to play or build security training dashboards.
Get started with CTFtime API in minutes using your preferred integration method.
# Add to your MCP client config (Claude Desktop, Cursor, Windsurf)
{
"jentic": {
"url": "https://api.jentic.com/mcp",
"auth": "oauth"
}
}
# Then ask your agent:
"list upcoming CTF events"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with CTFtime API API.
Pull the current year's top CTF teams via /top/ for ranking widgets
Retrieve top teams for a specific year via /top/{year}/ for historical analysis
List top teams filtered by country code via /top-by-country/{countryCode}/
List past and upcoming CTF events with metadata via /events/
Fetch full details for a single CTF event including format and weight via /events/{eventId}/
GET STARTED
Use for: Find the top CTF teams in the world this year, List upcoming CTF events I can register for, Show me CTF events happening in the next month, Get the top CTF teams in Germany
Not supported: Does not handle CTF challenge content, scoring infrastructure, or vulnerability disclosure — use for CTFtime team rankings, event listings, and results only.
The CTFtime API exposes the public CTF (Capture The Flag) competition data hosted at ctftime.org, including team rankings, event calendars, event results, and community votes. Endpoints return the top teams overall, the top teams within a country, lists of past and upcoming CTF events, details for a specific event or team, and per-year results and votes. The API is read-only and unauthenticated, designed for data analysis dashboards and mobile applications that surface upcoming CTFs and historical performance.
Pull per-year event results and community votes for trend analysis
Patterns agents use CTFtime API API for, with concrete tasks.
★ Upcoming CTF Event Discovery Bot
A Discord or Slack bot for a security team can poll the CTFtime events feed each morning and post a digest of upcoming competitions, weighted by event rating. Calls to GET /events/ return start and end times, format, weight, and registration links so the bot can rank events by quality and surface only those that match the team's level. The API is unauthenticated, which keeps the integration trivial.
Call GET /events/ with limit=20 and start filtered to the next 30 days, then post a ranked summary of events with weight above 30 to the team channel.
Team Ranking Dashboard
A security training platform can show students how their team performs against the global CTFtime leaderboard. The /top/ and /top-by-country/{countryCode}/ endpoints return ranked teams with point totals so the dashboard can render world rank, country rank, and yearly progression. Pair with /top/{year}/ to plot historical movement and motivate continued participation.
Call GET /top/ with limit=100 and GET /top-by-country/DE/ with limit=10 and merge the responses into a single dashboard payload.
CTF Event Performance Analytics
A security researcher analysing the competitive CTF scene can pull yearly results via /results/{year}/ and votes via /votes/{year}/ to study event quality trends, organiser reputation, and team performance. The structured JSON makes it straightforward to load the data into a notebook or warehouse for longitudinal analysis.
Call GET /results/2024/ and GET /votes/2024/ and join them on event ID to compute average vote score per event organiser.
AI Agent Integration via Jentic
An AI assistant for a CTF team can use Jentic to discover the CTFtime operations rather than hand-coding HTTP calls. The agent searches for an intent like 'list upcoming CTF events', loads the /events/ schema, and runs the call without managing endpoints. Because the API is unauthenticated, integration through Jentic is essentially zero-config.
Use Jentic search for 'list upcoming CTF events' and execute the matching ctftime.org operation, returning the next ten events to the user.
8 endpoints — the ctftime api exposes the public ctf (capture the flag) competition data hosted at ctftime.
METHOD
PATH
DESCRIPTION
/top/
Get current year's top teams
/top/{year}/
Get top teams for a specific year
/top-by-country/{countryCode}/
Get top teams by country
/events/
List past and upcoming CTF events
/events/{eventId}/
Get details for a specific CTF event
/teams/{teamId}/
Get details for a specific team
/results/{year}/
Get event results for a specific year
/votes/{year}/
Get event votes for a specific year
/top/
Get current year's top teams
/top/{year}/
Get top teams for a specific year
/top-by-country/{countryCode}/
Get top teams by country
/events/
List past and upcoming CTF events
/events/{eventId}/
Get details for a specific CTF event
Three things that make agents converge on Jentic-routed access.
Credential isolation
The CTFtime API is unauthenticated, so there are no secrets to manage. Jentic still proxies the call through MAXsystem so logging, retries, and rate-limit handling are consistent with authenticated APIs in the agent's toolset.
Intent-based discovery
Agents search Jentic by intent (for example 'list upcoming CTF events') and Jentic returns the matching CTFtime operation with its input schema, so the agent does not have to memorise paths like /events/ or /top-by-country/{countryCode}/.
Time to first call
Direct integration is roughly half a day to model the eight endpoints and handle pagination. Through Jentic the integration is under 15 minutes because the schemas and execution surface are already wired in.
Alternatives and complements available in the Jentic catalogue.
HackerOne API
HackerOne complements CTFtime by tracking real bug bounty work alongside CTF training history.
Use HackerOne for live bug bounty programmes and disclosures; use CTFtime for sport CTF rankings, events, and team training history.
GitHub REST API
GitHub stores the writeups and challenge repos that CTFtime events reference.
Use GitHub to pull challenge sources or writeups linked from a CTFtime event; use CTFtime for the event metadata, rankings, and votes.
Wayback Machine API
Wayback Machine recovers archived snapshots of past CTF event pages when originals go offline.
Use Wayback Machine to retrieve archived event sites for forensic research; use CTFtime for the canonical event index.
Specific to using CTFtime API API through Jentic.
What authentication does the CTFtime API use?
The CTFtime API is fully public and requires no authentication, so requests can be made without an API key or token. Through Jentic the call is still routed through the MAXsystem so an agent gets a consistent execution surface across authenticated and public APIs.
Can I list upcoming CTF events with the CTFtime API?
Yes. Call GET /events/ with a limit and start parameter to retrieve upcoming and past CTF events, including format, weight, and registration URLs. Filter the response by start time to surface only events still ahead of today.
What are the rate limits for the CTFtime API?
CTFtime asks consumers to use the API for data analysis and mobile applications and to cache responses, but specific rate limits are not published in the OpenAPI spec. Cache event and ranking responses for at least an hour to stay polite.
How do I read top CTF teams by country with the CTFtime API through Jentic?
Install the SDK with pip install jentic, search Jentic for 'top CTF teams by country', load the schema for the /top-by-country/{countryCode}/ operation, and execute it with a country code such as US or DE. Jentic handles the path parameter and returns the ranked teams as JSON.
How do I get details for a specific CTF event?
Use GET /events/{eventId}/ with the numeric event ID returned from the /events/ listing. The response includes the event title, format, weight, organisers, and start and finish timestamps you need to render an event page.
Is the CTFtime API free?
Yes. CTFtime publishes the API for free with the expectation that it is used for data analysis and mobile applications, not for re-publishing the dataset. Always credit ctftime.org when surfacing the data in a product.
/teams/{teamId}/
Get details for a specific team
/results/{year}/
Get event results for a specific year
/votes/{year}/
Get event votes for a specific year