# CryptoPanic News Scraper: Crypto Sentiment & Panic Score (`getascraper/cryptopanic-news-scraper`) Actor

Pull crypto news from CryptoPanic with full vote breakdown, panic score, and coin tags. Filter by category, coin, and content kind. Uses your own free CryptoPanic API token for reliable, complete data instead of a fragile scrape.

- **URL**: https://apify.com/getascraper/cryptopanic-news-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:**
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.52 / 1,000 news stories

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 📰 CryptoPanic News Scraper: No Login, No API Key

<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:24px 28px;background:#F5F1FE;border:1px solid #DDD0FB;border-top:4px solid #7C3AED;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Full CryptoPanic news data, without registering for anything</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Headlines, summaries, publish times, coin tags, community sentiment, and panic scores. Other CryptoPanic scrapers make you bring your own API key. This one does not.</span>
</td>
</tr>
</table>

<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD0FB;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#5B21B6">⚡ Zero setup</span><br>
<span style="font-size:12px;color:#57534E">No CryptoPanic account, no API key, nothing to configure. Hit Start.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD0FB;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#5B21B6">📄 Full article text</span><br>
<span style="font-size:12px;color:#57534E">Sentiment, panic score, and the complete article body where the publisher shares it.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD0FB;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#5B21B6">🪙 Track many coins</span><br>
<span style="font-size:12px;color:#57534E">List as many tickers as you want. Coverage stays balanced and duplicates are removed.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD0FB;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#5B21B6">🗓️ Schedule it</span><br>
<span style="font-size:12px;color:#57534E">Run hourly or daily on Apify to catch stories as they land.</span>
</td>
</tr>
</table>

**Get CryptoPanic's crypto news as structured data with zero setup.** Point it at [CryptoPanic](https://cryptopanic.com), pick your coins, and get a clean dataset with every story's headline, summary, source, exact publish time, tagged coins, and how the community voted on it. There is no account to create and no key to lose.

### 🔍 What does this CryptoPanic scraper do?

It collects CryptoPanic's news for each coin you list and merges everything into one de-duplicated dataset. Each story arrives with its headline, a short summary, the publishing source and author, an exact publish timestamp, the coins it was tagged with, and CryptoPanic's own sentiment and panic score where the community has voted. Around half of all stories also carry the full article text.

You can read the plain latest feed or switch to one of CryptoPanic's ranked views such as Rising, Hot, Bullish, or Bearish, and narrow any of them with a keyword.

### 🎯 Why use it?

**You want sentiment data without paying for a second subscription.** Vote counts, panic scores, and coin tags normally sit behind a CryptoPanic account. This Actor collects them without one, so there is no key to request and no separate rate limit to manage.

**You're tracking news across several coins at once.** List BTC, ETH, SOL, or any tickers you follow and get one merged feed. Coverage is spread evenly across your coins, so one busy coin cannot crowd out the rest.

**You're feeding an alert, dashboard, or model.** Exact publish timestamps and structured coin tags make the output easy to join against price data. Schedule it hourly and route the results wherever you need them.

### 🚀 How to use it

<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#F5F1FE;border:1px solid #DDD0FB;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#7C3AED;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">List your coins</span><br>
<span style="font-size:12px;color:#57534E">Add tickers like BTC, ETH, SOL, or leave it empty for the general feed.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F1FE;border:1px solid #DDD0FB;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#7C3AED;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick a feed</span><br>
<span style="font-size:12px;color:#57534E">Stay on Latest, or choose Rising, Hot, Bullish, Bearish, or Important.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F1FE;border:1px solid #DDD0FB;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#7C3AED;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export or automate</span><br>
<span style="font-size:12px;color:#57534E">Download as JSON, CSV, or Excel, or schedule it and send results onward.</span>
</td>
</tr>
</table>

### ⚙️ Input

| Field | Type | Required | Description |
|---|---|---|---|
| `currencies` | array of strings | No | Coin tickers to collect news for, for example BTC, ETH, SOL. Leave empty for the general feed. |
| `newsFilter` | enum | No | Which feed to read: Latest, Rising, Hot, Bullish, Bearish, Important, or Funny. |
| `searchQuery` | string | No | Optional keyword filter, for example ETF or halving. |
| `maxItems` | integer | No | Maximum number of unique stories to collect across all coins in this run. |
| `requestDelayMs` | integer | No | Pause between requests, in milliseconds. |
| `proxyConfiguration` | object | No | Proxy settings. Datacenter is used by default and works reliably. |

### 📦 Output

```json
{
  "id": 33289687,
  "title": "Bitcoin Just Got Its First Quantum-Safe Transaction Without a Soft Fork",
  "url": "https://coinpaprika.com/news/bitcoin-just-got-first-quantum-safe",
  "domain": "coinpaprika.com",
  "publishedAt": "2026-08-28T07:00:00+00:00",
  "cryptopanicUrl": "https://cryptopanic.com/news/33289687/Bitcoin-Just-Got-Its-First-Quantum-Safe-Transaction",
  "description": "StarkWare mined the first quantum-safe Bitcoin transaction on the network's mainnet on 26 August 2026.",
  "content": "StarkWare mined the first quantum-safe Bitcoin transaction on the network's mainnet on 26 August 2026. The method, built by researcher Avihu Levy, protects holdings from future quantum computers without any change to Bitcoin's protocol...",
  "sourceName": "coinpaprika",
  "sourceKind": "feed",
  "author": "coinpaprika",
  "kind": "link",
  "panicScore1h": 3,
  "sentimentLevel": 1,
  "votes": { "total_count": 4, "positive_count": 3, "like_count": 1 },
  "currencies": ["BTC"],
  "imageUrl": "https://content.coinpaprika.com/api/files/news/cover.jpg",
  "matchedQuery": "bitcoin",
  "scrapedAt": "2026-08-28T07:32:32.279Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### 📋 Data table

| Field | Type | Description |
|---|---|---|
| `id` | integer | CryptoPanic's own story ID, stable across runs. |
| `title` | string | The headline. |
| `url` | string | Direct link to the original article or post. |
| `domain` | string | Domain the story was published on. |
| `cryptopanicUrl` | string | Link to the story's CryptoPanic page, where its votes and discussion live. |
| `publishedAt` | string | Exact publish time in ISO 8601 format. |
| `description` | string | Short summary of the story, where one is published. |
| `content` | string | Full article text, for the roughly half of stories whose publisher shares it. |
| `contentHtml` | string | The same article with its original formatting and links kept. |
| `sourceName` / `sourceKind` | string | The publisher name, and whether it came from a news feed or a social account. |
| `author` | string | Byline, where one is published. |
| `kind` | string | Story type, such as a linked article or a post. |
| `panicScore1h` | number | CryptoPanic's panic score over the last hour, where enough votes exist. |
| `sentimentLevel` | number | Community sentiment rating for the story. |
| `votes` | object | Breakdown of community votes, such as positive and like counts. |
| `currencies` | array | Coin tickers this story was tagged with. |
| `imageUrl` | string | Cover image, where one is published. |
| `matchedQuery` | string | Which coin surfaced this story. Absent for the general feed. |
| `scrapedAt` | string | When this Actor collected it, in ISO 8601 format. |

### 💰 Pricing

This Actor is pay per result. You only pay for the stories you actually collect, an empty run costs nothing, and there is no subscription to manage.

### ⭐ Enjoying CryptoPanic News Scraper?

<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#F5F1FE;border:1px solid #DDD0FB;border-left:5px solid #7C3AED;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Got sentiment data without registering for another API key?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other traders and builders find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#7C3AED;border:1px solid #DDD0FB;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/cryptopanic-news-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 💡 Tips

- Leave "Coins" empty for the broadest sweep of everything CryptoPanic is publishing right now.
- Use the Bullish and Bearish feeds together to see both sides of the same story cycle for a coin.
- If you want sentiment data, pick a ranked feed. On Rising, nearly every story arrives with vote counts and a panic score, because that feed is ordered by how people voted. On Latest you get the freshest stories, but many are too new for anyone to have voted on yet.
- Ranked feeds also carry full article text more often, so choose Rising or Hot if the article body matters to you.
- Schedule an hourly run and keep only new story IDs if you are building an alert feed.

### ❓ FAQ

**Do I need a CryptoPanic account or API key?**
No. This Actor reads CryptoPanic's public news feed, so there is no account, no key, and no sign-up.

**Can I get vote counts and sentiment scores?**
Yes. Community sentiment, panic score, vote breakdowns, and coin tags are all included, with no API key needed.

**Why do some stories have no full article text?**
CryptoPanic only holds the full body for publishers that share it, which is roughly half of all stories. The rest are link posts where only a headline and summary were published. Requesting those stories individually does not add the text, so this is a limit of what CryptoPanic has rather than of this Actor.

**Why do some stories have no panic score or votes?**
Those values only exist once enough people have voted on a story, so very recent items often have none. This Actor never fills in placeholder values, so the field is simply left out when CryptoPanic has not published it.

**Will I get duplicate articles if I list overlapping coins?**
No. Stories are de-duplicated across every coin in the run, so an article tagged with both BTC and ETH is stored once.

**How far back can it go?**
Each coin feed goes back several hundred stories. Raise "Max items" to collect more, or schedule regular runs to build history over time.

### 🔗 Other actors

- [SEC Form 4 Insider Monitor: Filing Changes](https://apify.com/getascraper/sec-form4-insider-monitor) ↗ - Track insider trading filings as a market signal.
- [SEC Form D monitor: startup funding rounds](https://apify.com/getascraper/sec-form-d-funding-monitor) ↗ - Watch new startup funding filings as they're disclosed.
- [Telegram Channel Delta Monitor](https://apify.com/getascraper/telegram-channel-delta-monitor) ↗ - Track new posts across public Telegram channels, popular for crypto signal groups.
- [Subreddit Announcement Monitor: Matched Posts](https://apify.com/getascraper/reddit-community-announcement-keyword-monitor) ↗ - Watch subreddits for keyword-matched announcements.
- [Threads Monitor: Public Post Changes](https://apify.com/getascraper/threads-mention-delta-monitor) ↗ - Track public Threads posts and mentions over time.

# Actor input Schema

## `currencies` (type: `array`):

Coin tickers to collect news for, for example BTC, ETH, SOL. Each coin is collected separately and the results are merged and de-duplicated. Leave empty for the general news feed.

## `newsFilter` (type: `string`):

Which CryptoPanic feed to read. Latest is the straight chronological feed; the others are CryptoPanic's own community-ranked views.

## `searchQuery` (type: `string`):

Optional keyword filter, for example "ETF" or "halving". Leave empty to collect everything in the selected feed.

## `maxItems` (type: `integer`):

Maximum number of unique stories to collect across all coins in this run.

## `requestDelayMs` (type: `integer`):

Pause between requests. Raise this if a very large run starts getting rate limited.

## `proxyConfiguration` (type: `object`):

Datacenter proxies (the default) are cheap and work for CryptoPanic. Switch to Residential only if a very large run starts getting blocked.

## Actor input object example

```json
{
  "currencies": [
    "BTC",
    "ETH"
  ],
  "newsFilter": "",
  "searchQuery": "",
  "maxItems": 200,
  "requestDelayMs": 700,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `newsFeed` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "currencies": [
        "BTC",
        "ETH"
    ],
    "newsFilter": "",
    "searchQuery": "",
    "maxItems": 200,
    "requestDelayMs": 700,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/cryptopanic-news-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "currencies": [
        "BTC",
        "ETH",
    ],
    "newsFilter": "",
    "searchQuery": "",
    "maxItems": 200,
    "requestDelayMs": 700,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/cryptopanic-news-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "currencies": [
    "BTC",
    "ETH"
  ],
  "newsFilter": "",
  "searchQuery": "",
  "maxItems": 200,
  "requestDelayMs": 700,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/cryptopanic-news-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/cryptopanic-news-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/eP7ELPFTelGPMYNUI/builds/DfeNkmjhIEAFfTe4K/openapi.json
