# USA Today Keyword Search (`ryyos/usatoday-keyword-search-scraper`) Actor

\[$1.5/1000] Search usatoday.com by keyword and get full article detail for every match - headline, author, dates, complete body text, every image, and video URLs - not just search-result snippets

- **URL**: https://apify.com/ryyos/usatoday-keyword-search-scraper.md
- **Developed by:** [Rio Dwi Saputra](https://apify.com/ryyos) (community)
- **Categories:** News, Developer tools, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### What does USA Today Keyword Search Scraper do?

USA Today Keyword Search Scraper searches [usatoday.com](https://www.usatoday.com) by keyword or phrase and returns full article detail for every match - not just a title and snippet. For each result it fetches the complete headline, byline, publish and update timestamps, full body text, every image URL, and video URLs when present. Running it on Apify means no servers to manage, one-click scheduling to catch new coverage of a topic as it publishes, and instant export to JSON, CSV, or Excel.

### Why use USA Today Keyword Search Scraper?

- **Brand and reputation monitoring** - get alerted the moment USA Today publishes something about your company, product, or public figure.
- **Research** - pull every USA Today article mentioning a topic, event, or name for a dataset or literature review.
- **Newsjacking and PR** - see how a story is developing across USA Today's coverage in real time.
- **Competitive intelligence** - track a competitor's or industry's press coverage over time.

### How to use USA Today Keyword Search Scraper

1. Click **Try for free** on the Actor page (or open the Input tab if you're already running it).
2. Enter a `query` - any keyword or phrase you'd search for on USA Today's own search box.
3. Optionally set `maxResults` to control how many matching articles get full detail pulled.
4. Click **Start** and watch results land in the dataset in real time.
5. Export the finished dataset as JSON, CSV, Excel, HTML, or XML, or pull it via the Apify API.

### Input

| Field | Type | Description |
|---|---|---|
| `query` | string | **Required.** Keyword or phrase to search for. |
| `maxResults` | integer | Maximum number of matching articles to fetch full detail for (default 50). |

See the **Input** tab for the full schema.

Example input:

```json
{
  "query": "artificial intelligence",
  "maxResults": 50
}
```

### Output

Each dataset item is one matching article, identical in shape to the companion USA Today Articles Scraper's output, plus the `searchQuery` field:

```json
{
  "searchQuery": "artificial intelligence",
  "url": "https://www.usatoday.com/story/money/2026/08/16/example-headline/91263969007/",
  "headline": "Example headline about a real AI story",
  "shortHeadline": "Shorter version of the headline",
  "description": "One-sentence summary of the article.",
  "articleSection": "money",
  "datePublished": "2026-08-16T09:00:00Z",
  "dateModified": "2026-08-16T09:30:00Z",
  "isAccessibleForFree": true,
  "authorName": "John Smith",
  "authorJobTitle": "Money Reporter",
  "authorUrl": "https://www.usatoday.com/staff/5678/john-smith/",
  "publisherName": "USA TODAY",
  "heroImageUrl": "https://www.usatoday.com/gcdn/authoring/authoring-images/example.jpg",
  "images": ["https://www.usatoday.com/gcdn/authoring/authoring-images/example.jpg"],
  "videoUrls": [],
  "tags": ["Technology", "Artificial Intelligence"],
  "bodyText": "Full multi-paragraph article body text..."
}
```

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

### Data table

| Field | Description |
|---|---|
| `searchQuery` | The query that matched this article |
| `url` | Canonical article URL |
| `headline` / `shortHeadline` | Full and short headline variants |
| `description` | Article summary/deck |
| `articleSection` | The site's own taxonomy label for this article |
| `datePublished` / `dateModified` | ISO 8601 timestamps |
| `isAccessibleForFree` | `false` if the article is behind USA Today's subscriber paywall |
| `authorName` / `authorJobTitle` / `authorUrl` | Byline detail |
| `heroImageUrl` / `images` | Hero image and every inline image URL |
| `videoUrls` | Direct video URLs, when the article embeds one |
| `tags` | Editorial tags/keywords |
| `bodyText` | Full article body text |

### Pricing / Cost estimation

This Actor uses Apify's Pay Per Event pricing at **$1.5 per 1,000 articles scraped**, well below comparable news-article scrapers on Apify Store. A typical 50-result search costs a fraction of a cent. No subscription or minimum spend required - you only pay for what you scrape.

### Tips or Advanced options

- Keep `maxResults` modest for a quick check of the latest coverage; raise it to pull a full historical sweep of every USA Today article matching a query.
- Schedule this Actor on a recurring basis to catch new articles on a topic as USA Today publishes them.
- Pair with the companion **USA Today Articles Scraper** if you also want full-section browsing rather than keyword search.

### FAQ, disclaimers, and support

This Actor only reads publicly accessible pages on usatoday.com and does not bypass any paywall or login. Paywalled articles are still returned with `isAccessibleForFree: false` so you can filter them out downstream. Site layout changes on USA Today's end may occasionally require an update to this Actor - please use the Issues tab to report anything that looks wrong. Need a custom variant? Reach out via the Issues tab.

# Actor input Schema

## `query` (type: `string`):

Keyword or phrase to search for on usatoday.com.

## `maxResults` (type: `integer`):

Maximum number of matching articles to fetch full detail for.

## Actor input object example

```json
{
  "maxResults": 50
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `runInfo` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("ryyos/usatoday-keyword-search-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("ryyos/usatoday-keyword-search-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 '{}' |
apify call ryyos/usatoday-keyword-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ryyos/usatoday-keyword-search-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/wOv1ajDk3OGEIOPzn/builds/roUpoe03ClnFpLXFB/openapi.json
