# Decrypt Crypto News Finder by Category & Keyword (`dataspryva/decrypt-crypto-news-finder-by-category-and-keyword`) Actor

Search Decrypt's crypto, Web3, and AI news by keyword or category, or look up specific articles, for full article text, authors, tags, mentioned coins, and featured images.

- **URL**: https://apify.com/dataspryva/decrypt-crypto-news-finder-by-category-and-keyword.md
- **Developed by:** [Dataspryva](https://apify.com/dataspryva) (community)
- **Categories:** News, AI, Other
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Decrypt Crypto News Finder by Category & Keyword

Decrypt publishes crypto, Web3, AI, policy and market news across a deep archive and five languages. This actor searches that archive by keyword, browses 47 categories, tags, 121 coins or authors, looks up specific articles by ID or URL, and returns full article records with HTML and plain text, TL;DR bullets, editors, author profiles, images, taxonomy and reading metrics. No account, cookies or proxy setup is required.

### What this actor does

- **Seven modes:** keyword search, browse by category, lookup by ID/URL, latest articles, browse by tag, browse by coin and browse by author
- **Deep archive access** with server-side date ranges, newest/oldest/relevance sorting and up to 10,000 articles per run
- **Full article data:** HTML body, plain-text body, TL;DR, editors, author bios and social profiles, tags, coins, collections, distinctions and images
- **Five locales:** English, Spanish, French, Arabic and Simplified Chinese, with the correct localized article URL
- **Batch lookups:** paste article IDs or decrypt.co URLs, including localized and `/resources/` links
- **Scheduled monitoring:** `onlyNew` skips articles returned by earlier runs
- **Empty fields are omitted** from every record instead of being returned as null

### Output per article

- `id` — Decrypt article ID
- `title`, `slug`, `excerpt`, `blurb` — headline and summaries
- `locale`, `status`, `publishedAt`, `modifiedAt` — language, publication status and ISO timestamps
- `content` — full article body as HTML
- `contentText` — plain-text article body for search, NLP and summaries
- `wordCount`, `readingTimeMinutes` — body word count and reading time in minutes
- `readingTime` — original reading-time label from the source
- `tldrTitle`, `tldrContent`, `tldrText` — "In brief" heading, HTML bullets and plain-text bullets
- `authors[]`, `authorSlugs[]` — byline names and slugs
- `authorDetails[]` — `name`, `slug`, `title`, `bio`, `location`, `twitter`, `linkedin`, `avatarUrl`, `roles`
- `editors[]`, `editorSlugs[]` — editor names and slugs
- `category`, `categorySlug`, `categoryParent`, `categoryParentSlug` — leaf category and its parent section
- `tags[]`, `tagSlugs[]` — topic names and filterable slugs
- `coins[]`, `coinSlugs[]`, `coinSymbols[]` — mentioned coins, slugs and ticker symbols
- `collections[]`, `collectionSlugs[]` — editorial collections
- `distinctions[]`, `distinctionSlugs[]` — editorial distinctions
- `celebrities[]`, `celebritySlugs[]` — people linked to the article
- `featuredImageUrl`, `featuredImageAlt`, `featuredImageWidth`, `featuredImageHeight` — featured image
- `featuredVideoUrl` — featured video URL when the article has one
- `metaDescription`, `socialImageUrl` — SEO description and social-sharing image
- `sourceUrl`, `canonicalUrl` — localized article URL
- `recordType` — always `"article"`
- `scrapedAt` — timestamp of when the record was scraped

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string (enum, required) | `search` | `search`, `browseByCategory`, `byId`, `trending`, `byTag`, `byCoin` or `byAuthor` |
| `searchQuery` | string | `""` | Keyword matched against titles, excerpts and bodies (mode `search`) |
| `category` | string (enum) | `""` | One of 47 category slugs; empty means any category |
| `categories` | array | `[]` | Several category slugs at once |
| `tagSlugs` | array | `[]` | Tag slugs, e.g. `bitcoin`, `regulation` |
| `coinSlugs` | array | `[]` | Coin slugs, names or tickers, e.g. `bitcoin`, `ethereum`, `SOL` |
| `authorSlugs` | array | `[]` | Author slugs, e.g. `jose` |
| `articleIds` | array | `[]` | IDs or decrypt.co URLs (mode `byId`) |
| `locale` | string (enum) | `""` | `en`, `es`, `fr`, `ar`, `zh-hans`; empty means all languages |
| `dateRangeFrom` | string | – | Only articles published on or after this date (`YYYY-MM-DD`) |
| `dateRangeTo` | string | – | Only articles published on or before this date (`YYYY-MM-DD`) |
| `sortBy` | string (enum) | `newest` | `newest`, `oldest` or `relevance` |
| `includeContent` | boolean | `true` | Include HTML/plain-text bodies, TL;DR content and word count |
| `onlyNew` | boolean | `false` | Skip article IDs returned by earlier runs |
| `maxItems` | integer | `10` | Maximum articles to return (1–10,000) |
| `proxyConfiguration` | object | off | Optional override; the actor works without a proxy |

#### Example: keyword search with relevance and a date window

```json
{
  "mode": "search",
  "searchQuery": "etf inflows",
  "sortBy": "relevance",
  "dateRangeFrom": "2026-01-01",
  "dateRangeTo": "2026-03-31",
  "locale": "en",
  "maxItems": 200
}
```

#### Example: browse a category in Spanish without article bodies

```json
{
  "mode": "browseByCategory",
  "category": "markets",
  "locale": "es",
  "includeContent": false,
  "maxItems": 100
}
```

#### Example: look up a mixed batch of IDs and URLs

```json
{
  "mode": "byId",
  "articleIds": [
    "382316",
    "https://decrypt.co/373492/bitcoin-64000-inflacion-ipc-junio-fed-tasas-interes",
    "https://decrypt.co/resources/what-is-eip-7702-the-ethereum-upgrade-behind-the-6-4b-binance-hack"
  ]
}
```

#### Example: monitor one coin for new stories

```json
{
  "mode": "byCoin",
  "coinSlugs": ["solana"],
  "dateRangeFrom": "2026-10-01",
  "onlyNew": true,
  "sortBy": "newest",
  "maxItems": 50
}
```

### Use cases

- **Crypto news monitoring** — track coverage of a coin, project, company or person across the archive
- **NLP and sentiment research** — feed clean `contentText` and `tldrText` into your own models
- **Media intelligence** — compare category, tag and author coverage over specific date windows
- **Content aggregation** — power a newsletter, digest or research dashboard with full articles
- **Editorial archiving** — build a localized archive across English, Spanish, French, Arabic and Chinese
- **Scheduled alerts** — use `onlyNew` to pick up only stories published since the last run

### FAQ

**Is this affiliated with Decrypt?**
No. This is an independent, third-party actor that reads publicly available Decrypt article pages and feeds. It is not operated by or affiliated with Decrypt.

**Do I need an account, API key or cookie?**
No. The actor runs without credentials and without proxy configuration.

**Does it return full article text or just a summary?**
Both. `content` is the complete HTML body and `contentText` is a plain-text version. `excerpt`, `blurb` and the TL;DR fields are also included when the article has them.

**Why are some fields missing from a record?**
Not every article has a coin, collection, distinction, editor, TL;DR or video. Fields with no value are omitted rather than returned empty or null. Decrypt's coin filter can also match stories whose article record has no explicit coin relation, so a `byCoin` run may include rows without `coins` or `coinSlugs`; the actor reports the article honestly instead of inventing a coin.

**What do `tagSlugs`, `coinSlugs` and `authorSlugs` expect?**
Tag and author filters use the slugs returned in each record, not display names. Coin filters accept slugs plus common names and ticker symbols, which are mapped to slugs automatically.

**How fresh is the data, and is `trending` a real trend signal?**
The archive is read live at run time. `trending` is the legacy name for the newest-first mode; it returns the latest published articles, not a proprietary popularity score.

**How many articles can one run return?**
Up to 10,000 with `maxItems`. The source exposes a very large archive; for very broad queries, split the work by date range or category to keep each run focused.

**Do localized articles have working URLs?**
Yes. `sourceUrl` and `canonicalUrl` use the article's own locale path, including `/es/`, `/fr/`, `/ar/` and `/zh-hans/`.

**Are sentiment scores or AI analysis included?**
No. Those values are not published by the source, and the actor does not fabricate them. Use `contentText` or `tldrText` with your own analysis pipeline.

**Can I run this on a schedule?**
Yes. Set `onlyNew` to `true` and the actor will skip article IDs returned by earlier runs, so each scheduled run returns only unseen stories.

# Actor input Schema

## `mode` (type: `string`):

What to fetch. Search matches titles, excerpts and article bodies. The latest mode returns the newest stories.

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

Keyword or phrase matched against article titles, excerpts and bodies (mode=search). E.g. bitcoin, ethereum, NFT.

## `category` (type: `string`):

One Decrypt category slug (mode=browseByCategory and as a filter in other modes). Leave empty for any category.

## `categories` (type: `array`):

Filter by several category slugs at once. Applies to search, latest, tag, coin and author modes.

## `tagSlugs` (type: `array`):

Filter by Decrypt tag slugs, e.g. bitcoin, ethereum, regulation. Tag names are not accepted; use the slugs returned in each record.

## `coinSlugs` (type: `array`):

Filter by coin slugs, e.g. bitcoin, ethereum, solana. Names and ticker symbols are also accepted and mapped to slugs. The source can match articles with no explicit coin relation; those rows omit coins and coinSlugs.

## `authorSlugs` (type: `array`):

Filter by author slugs, e.g. jose, stephengraves. Author names are not accepted; use the slugs returned in each record.

## `articleIds` (type: `array`):

Article IDs or decrypt.co URLs (mode=byId). Accepts bare IDs, /id/slug, localized /es/id/slug, ?p=id and /resources/slug URLs.

## `locale` (type: `string`):

Article language. Leave empty to include every locale.

## `dateRangeFrom` (type: `string`):

Only articles published on or after this date (YYYY-MM-DD). The date range is applied by the source.

## `dateRangeTo` (type: `string`):

Only articles published on or before this date (YYYY-MM-DD). The date range is applied by the source.

## `sortBy` (type: `string`):

Newest first, oldest first, or best match. Best match needs a search query; otherwise newest is used.

## `includeContent` (type: `boolean`):

Include full HTML and plain-text article bodies, TL;DR content and word count. Turn off for a lighter dataset.

## `onlyNew` (type: `boolean`):

Skip article IDs returned by earlier runs of this actor. Useful for scheduled monitoring. State is kept automatically.

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

Maximum number of articles to return (1-10,000).

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

Optional. Leave off for a direct connection; the actor does not require a proxy.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "bitcoin",
  "category": "news",
  "categories": [],
  "tagSlugs": [],
  "coinSlugs": [],
  "authorSlugs": [],
  "articleIds": [
    "375656"
  ],
  "locale": "en",
  "sortBy": "newest",
  "includeContent": true,
  "onlyNew": false,
  "maxItems": 1,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `articles` (type: `string`):

Dataset containing all scraped Decrypt articles.

# 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 = {
    "mode": "search",
    "searchQuery": "bitcoin",
    "category": "news",
    "categories": [],
    "tagSlugs": [],
    "coinSlugs": [],
    "authorSlugs": [],
    "articleIds": [
        "375656"
    ],
    "locale": "en",
    "sortBy": "newest",
    "includeContent": true,
    "onlyNew": false,
    "maxItems": 1,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("dataspryva/decrypt-crypto-news-finder-by-category-and-keyword").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 = {
    "mode": "search",
    "searchQuery": "bitcoin",
    "category": "news",
    "categories": [],
    "tagSlugs": [],
    "coinSlugs": [],
    "authorSlugs": [],
    "articleIds": ["375656"],
    "locale": "en",
    "sortBy": "newest",
    "includeContent": True,
    "onlyNew": False,
    "maxItems": 1,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("dataspryva/decrypt-crypto-news-finder-by-category-and-keyword").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 '{
  "mode": "search",
  "searchQuery": "bitcoin",
  "category": "news",
  "categories": [],
  "tagSlugs": [],
  "coinSlugs": [],
  "authorSlugs": [],
  "articleIds": [
    "375656"
  ],
  "locale": "en",
  "sortBy": "newest",
  "includeContent": true,
  "onlyNew": false,
  "maxItems": 1,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call dataspryva/decrypt-crypto-news-finder-by-category-and-keyword --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dataspryva/decrypt-crypto-news-finder-by-category-and-keyword"
        }
    }
}
```

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/khuWc0CVpBIzolNFr/builds/QymXnxwvFb54S2uVZ/openapi.json
