Events

Read curated, scored crypto events. Filter by coin, category, date range, or impact. Every event has an editorial title, date, linked coins, and (on Pro+) source proof and an impact score.

Endpoints

GET/v2/events

List events

Returns a paginated list of upcoming events. Default sort is date asc (soonest first). The coins, categories, and date filters compose with AND.

Parameters

FieldInTypeRequiredDescription
coinsquerystringnoComma-separated coin **slugs** (e.g. `bitcoin,ethereum`). Tickers are accepted but **strongly discouraged**; symbols collide across coins (e.g. `UNI` resolves to several different projects). Use `GET /v2/coins` to look up canonical slugs.
categoriesquerystringnoComma-separated category ids. Case-insensitive. Use `GET /v2/categories` to look up the canonical id list.
fromqueryiso8601noInclusive lower bound on `date`. Default = today.
toqueryiso8601noInclusive upper bound on `date`. Default = today + tier upcoming window (e.g. 7 days on Free, 90 days on Standard, full on Pro+).
keywordquerystringnoFree-text search across event title and description. Case-insensitive substring match.
impactMinquerynumbernoLower bound on impact score (0.0–10.0). Pro+ only; ignored on Standard.
sortByquerystringnoSort order. Default `date_asc` (soonest first).Default date_asc·Enum: date_asc · date_desc · created_desc · created_desc_and_updated_desc · impact_desc
limitqueryintegernoPage size (1–100).Default 20
cursorquerystringnoOpaque pagination cursor returned in the previous response's `meta.cursor`.

Response item

FieldTypeDescription
idstringStable event identifier.
slugstringURL-safe slug used on the public site.
titlestringEditorial title: neutral, factual, no marketing copy.
descriptionstringOne-paragraph summary of what the event is and what's at stake.
dateiso8601Event start date in ISO-8601. **Do NOT render this directly when `isEstimated` is true** (see below). Use it for sorting / filtering / machine logic.
dateEndiso8601Range end date. Empty string on single-day events. Non-empty marks this as a multi-day window.
dateTypestringOne of `date` · `month` · `quarter`. Indicates how the date was sourced. Range events use `date` with a non-empty `dateEnd`. Drives display reconstruction when `isEstimated` is true.
isEstimatedboolean**True when the date is a hedge or a window-end.** `month` / `quarter` events auto-imply true; for `date` it depends on the source's wording (e.g. "around 15 May", "expected by Q2"). When true, treat `date` as imprecise and use `displayedDate` to render to users.
displayedDatestringPre-formatted human-readable date string (e.g. `Q2 2026`, `By 30 May`, `Aug 2026`, `01 Jun → 03 Jun`). Use this on user-facing UI; fall back to constructing your own from `dateType` + `date` + `dateEnd` + `isEstimated` only if you need a different format.
categoriesstring[]Editorial categories from the canonical taxonomy (e.g. `Release`, `Regulation`, `Fork/Swap`).
coinsarray<CoinRef>Coins linked to this event.
impactstringEditorial impact. `null` on Free / Standard. On **Pro**, one of `Low` · `Mid` · `High` · `Critical`. On **Elite+**, a precise score 0.0–10.0 (returned as a JSON number).
impactSummarystringOne-sentence editorial summary for the impact score (Pro+).
sourceUrlstringURL of the original announcement (Pro+).
snapshotUrlstringScreenshot proof of the source at the time of curation (Pro+).
lastVerifiedAtiso8601When editorial last re-verified this event (Pro+).
createdAtiso8601When the event was first added to the catalog.
updatedAtiso8601When the event was last modified.

CoinRef

FieldTypeDescription
slugstringStable coin identifier. URL-safe; never changes.
symbolstringTrading ticker.
namestringDisplay name (e.g. `Bitcoin`).

PaginationMeta

FieldTypeDescription
totalintegerTotal number of records matching the filters.
limitintegerPage size that was applied.
cursorstringOpaque cursor; pass to the next request as `cursor` to fetch the next page. Null on the last page.

List wrapper

FieldTypeDescription
dataarray<Event>Page of events.
metaobject<PaginationMeta>Pagination metadata.

Request

curl -X GET "https://api.coinmarketcal.com/v2/events?impactMin=7.5" \
  -H "x-api-key: $COINMARKETCAL_API_KEY" \
  -H "Accept: application/json"

Example response

{
  "data": [
    {
      "id": "48291",
      "slug": "ethereum-pectra-upgrade",
      "title": "Ethereum Pectra Upgrade",
      "description": "The Pectra upgrade activates on Ethereum mainnet, bundling EIP-7702 account abstraction, validator-consolidation changes, and increased blob throughput for rollups.",
      "date": "2026-05-06T12:00:00Z",
      "dateEnd": "",
      "dateType": "date",
      "isEstimated": false,
      "displayedDate": "06 May 2026",
      "categories": [
        "Release"
      ],
      "coins": [
        {
          "slug": "ethereum",
          "symbol": "ETH",
          "name": "Ethereum"
        }
      ],
      "impact": 8.5,
      "impactSummary": "Pectra directly touches wallet UX, rollup economics, and validator income across the Ethereum ecosystem.",
      "sourceUrl": "https://blog.ethereum.org/2026/02/12/pectra-mainnet-activation",
      "snapshotUrl": "https://d32bfp67k1q0s7.cloudfront.net/eth-pectra.png",
      "lastVerifiedAt": "2026-04-19T09:00:00Z",
      "createdAt": "2026-02-12T14:22:00Z",
      "updatedAt": "2026-04-19T09:00:00Z"
    }
  ],
  "meta": {
    "total": 1247,
    "limit": 20,
    "cursor": "eyJvZmZzZXQiOjIwfQ"
  }
}

Try it

Loading your keys…

Live request. Counts against your plan's rate limit.

https://api.coinmarketcal.com/v2/events

GET/v2/events/{id}

Fetch a single event

Returns the full event payload by id. Tier-gated fields (impact score, source proof) follow the caller's plan. The same tier date window as GET /v2/events applies — an event outside your plan window returns 404 even when the id exists.

Parameters

FieldInTypeRequiredDescription
idpathstringyesThe event id, as returned by `GET /v2/events`.

Response

FieldTypeDescription
idstringStable event identifier.
slugstringURL-safe slug used on the public site.
titlestringEditorial title: neutral, factual, no marketing copy.
descriptionstringOne-paragraph summary of what the event is and what's at stake.
dateiso8601Event start date in ISO-8601. **Do NOT render this directly when `isEstimated` is true** (see below). Use it for sorting / filtering / machine logic.
dateEndiso8601Range end date. Empty string on single-day events. Non-empty marks this as a multi-day window.
dateTypestringOne of `date` · `month` · `quarter`. Indicates how the date was sourced. Range events use `date` with a non-empty `dateEnd`. Drives display reconstruction when `isEstimated` is true.
isEstimatedboolean**True when the date is a hedge or a window-end.** `month` / `quarter` events auto-imply true; for `date` it depends on the source's wording (e.g. "around 15 May", "expected by Q2"). When true, treat `date` as imprecise and use `displayedDate` to render to users.
displayedDatestringPre-formatted human-readable date string (e.g. `Q2 2026`, `By 30 May`, `Aug 2026`, `01 Jun → 03 Jun`). Use this on user-facing UI; fall back to constructing your own from `dateType` + `date` + `dateEnd` + `isEstimated` only if you need a different format.
categoriesstring[]Editorial categories from the canonical taxonomy (e.g. `Release`, `Regulation`, `Fork/Swap`).
coinsarray<CoinRef>Coins linked to this event.
impactstringEditorial impact. `null` on Free / Standard. On **Pro**, one of `Low` · `Mid` · `High` · `Critical`. On **Elite+**, a precise score 0.0–10.0 (returned as a JSON number).
impactSummarystringOne-sentence editorial summary for the impact score (Pro+).
sourceUrlstringURL of the original announcement (Pro+).
snapshotUrlstringScreenshot proof of the source at the time of curation (Pro+).
lastVerifiedAtiso8601When editorial last re-verified this event (Pro+).
createdAtiso8601When the event was first added to the catalog.
updatedAtiso8601When the event was last modified.

CoinRef

FieldTypeDescription
slugstringStable coin identifier. URL-safe; never changes.
symbolstringTrading ticker.
namestringDisplay name (e.g. `Bitcoin`).

Request

curl -X GET "https://api.coinmarketcal.com/v2/events/{id}" \
  -H "x-api-key: $COINMARKETCAL_API_KEY" \
  -H "Accept: application/json"

Example response

{
  "id": "48291",
  "slug": "ethereum-pectra-upgrade",
  "title": "Ethereum Pectra Upgrade",
  "description": "The Pectra upgrade activates on Ethereum mainnet, bundling EIP-7702 account abstraction, validator-consolidation changes, and increased blob throughput for rollups.",
  "date": "2026-05-06T12:00:00Z",
  "dateEnd": "",
  "dateType": "date",
  "isEstimated": false,
  "displayedDate": "06 May 2026",
  "categories": [
    "Release"
  ],
  "coins": [
    {
      "slug": "ethereum",
      "symbol": "ETH",
      "name": "Ethereum"
    }
  ],
  "impact": 8.5,
  "impactSummary": "Pectra directly touches wallet UX, rollup economics, and validator income across the Ethereum ecosystem.",
  "sourceUrl": "https://blog.ethereum.org/2026/02/12/pectra-mainnet-activation",
  "snapshotUrl": "https://d32bfp67k1q0s7.cloudfront.net/eth-pectra.png",
  "lastVerifiedAt": "2026-04-19T09:00:00Z",
  "createdAt": "2026-02-12T14:22:00Z",
  "updatedAt": "2026-04-19T09:00:00Z"
}

Try it

Loading your keys…

Live request. Counts against your plan's rate limit.

https://api.coinmarketcal.com/v2/events/{id}