# CoinMarketCap API Quick Start

> For the complete CoinMarketCap API documentation index, see [llms.txt](https://pro.coinmarketcap.com/llms.txt). For a single-file dump of all documentation, see [llms-full.txt](https://pro.coinmarketcap.com/llms-full.txt).

Use this page to make a successful first request against the CoinMarketCap Pro API. If you are evaluating the product, start with the production API first so you can see the normal authentication flow and the real response shape.

## Keyless endpoints

>We provide a bunch of keyless endpoints for you to have a test if you would like to have a quick start, please see the full list at [here](/api/documentation/pro-api-reference/trial-pro-api).

1. **Make one production request**<br/>
  Start with a simple request against the live `pro-api.coinmarketcap.com/trial-pro-api` domain.

2. **Choose the right next step**<br/>
  Use the rest of the docs to find the right endpoint family, workflow, and implementation guidance.

## What you'll do

1. **Get an API key**

   Sign up for a free Developer Portal account at [pro.coinmarketcap.com/signup](https://pro.coinmarketcap.com/signup).

1. **Make one production request**

   Start with a simple request against the live `pro-api.coinmarketcap.com` domain.

1. **Choose the right next step**

   Use the rest of the docs to find the right endpoint family, workflow, and implementation guidance.

## 1. Get your API key

Create an account at [pro.coinmarketcap.com/signup](https://pro.coinmarketcap.com/signup) or sign in to your existing account in the Developer Portal. Your API key is available from the dashboard. If you are just getting started, the free `Basic` plan is the fastest way to evaluate the API.

## 2. Make your first production request

For a first request, start with `GET /v1/cryptocurrency/listings/latest`. It returns a ranked list of active cryptocurrencies and gives you a good first look at the standard response structure used across the API.

**cURL**

```bash
curl -G 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest' \
  --data-urlencode 'start=1' \
  --data-urlencode 'limit=10' \
  --data-urlencode 'convert=USD' \
  -H 'Accept: application/json' \
  -H 'X-CMC_PRO_API_KEY: YOUR_API_KEY'
```

**Node.js**

```javascript
async function run() {
  const url = new URL(
    "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest",
  );

  url.search = new URLSearchParams({
    start: "1",
    limit: "10",
    convert: "USD",
  }).toString();

  const response = await fetch(url, {
    headers: {
      Accept: "application/json",
      "X-CMC_PRO_API_KEY": "YOUR_API_KEY",
    },
  });

  if (!response.ok) {
    throw new Error(`Request failed: ${response.status} ${response.statusText}`);
  }

  const data = await response.json();
  console.log(data);
}

run().catch(console.error);
```

If you want a few more tested production examples for the same request, use Python 3 or Ruby:

### Python 3

```python
import json
import ssl
import urllib.parse
import urllib.request

import certifi

params = urllib.parse.urlencode(
    {
        "start": "1",
        "limit": "10",
        "convert": "USD",
    }
)

request = urllib.request.Request(
    f"https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?{params}",
    headers={
        "Accept": "application/json",
        "X-CMC_PRO_API_KEY": "YOUR_API_KEY",
    },
)

context = ssl.create_default_context(cafile=certifi.where())

with urllib.request.urlopen(request, context=context) as response:
    data = json.load(response)

print(data)
```

### Ruby

```ruby
require "json"
require "net/http"
require "uri"

uri = URI("https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest")
uri.query = URI.encode_www_form(
  start: "1",
  limit: "10",
  convert: "USD",
)

request = Net::HTTP::Get.new(uri)
request["Accept"] = "application/json"
request["X-CMC_PRO_API_KEY"] = "YOUR_API_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

raise "Request failed: #{response.code} #{response.message}" unless response.is_a?(Net::HTTPSuccess)

data = JSON.parse(response.body)
puts JSON.pretty_generate(data)
```

## 3. Understand the response

Most CoinMarketCap API endpoints return:

- `data`: the records you asked for
- `status`: request metadata such as `timestamp`, `credit_count`, `elapsed`, and any error information

For this endpoint, `data` is a ranked list of cryptocurrencies. A truncated response looks like this:

```json
{
  "status": {
    "timestamp": "2025-01-15T12:00:00.000Z",
    "error_code": 0,
    "error_message": null,
    "elapsed": 12,
    "credit_count": 1
  },
  "data": [
    {
      "id": 1,
      "name": "Bitcoin",
      "symbol": "BTC",
      "slug": "bitcoin",
      "cmc_rank": 1,
      "circulating_supply": 19800000,
      "total_supply": 19800000,
      "max_supply": 21000000,
      "last_updated": "2025-01-15T12:00:00.000Z",
      "quote": {
        "USD": {
          "price": 99150.42,
          "volume_24h": 32500000000,
          "percent_change_1h": 0.15,
          "percent_change_24h": 2.34,
          "percent_change_7d": -1.05,
          "market_cap": 1963178316000,
          "fully_diluted_market_cap": 2082158820000,
          "last_updated": "2025-01-15T12:00:00.000Z"
        }
      }
    }
  ]
}
```

Once you can successfully fetch and inspect that payload, you are ready to move deeper into the API.

> Important: Do not call the Pro API directly from client-side JavaScript in the browser. Your API key should stay on your backend or another trusted server-side environment.

## 4. Decide where to go next

Use the next page based on what you need:

- [Authentication](/guides/authentication) if you want the full authentication model and API key handling details
- [Common workflows](/guides/common-workflows) if you want to start from a use case such as latest prices, historical data, exchange data, or DEX data
- [Choose an endpoint](/pro-api-reference/endpoint-overview) if you want to browse the API by task and category
- [API response format, IDs, and timestamps](/guides/standards-and-conventions) if you want to understand identifiers, bundling, and response structure
- [Rate limits, errors, and troubleshooting](/guides/errors-and-rate-limits) if you want to understand the main failure cases early

## Optional: Postman collection

To speed up evaluation and team sharing, you can also use the CoinMarketCap Postman collection. [Read more here](https://coinmarketcap.com/alexandria/article/register-for-coinmarketcap-api).
