# News monitoring with a web search API: daily queries, new stories only

> Monitor the news with a search API: topic=news, past-day results, dedup by URL and article text in Markdown. Node.js script included. No KYC, pay in crypto.

- URL: https://llmwebsearch.com/use-cases/news-monitoring/
- Last updated: 2026-10-22
- Publisher: LLMWebSearch (https://llmwebsearch.com)

Watching a market, a competitor or a regulation means running the same searches every day and noticing what is new. A news search with page text turns that chore into a short script and a daily digest.

**Quick answer — How do I monitor news with a search API?**

Run a fixed list of queries once a day with news results from the past day, keep only URLs you have not seen, and summarise the new articles. **LLMWebSearch** returns news results with the first 3 articles read as Markdown, for one credit per query. Fifty topics checked daily use about 1,500 credits a month, from $1.20/1K searches. No KYC; pay in crypto.

## How does news monitoring work with LLMWebSearch?

Three parameters do most of the work. `topic=news` asks for news results instead of general web pages. `time_range=day` keeps only items from the past day. `read=3` returns the text of the first three articles, so you can summarise them without opening each link.

A scheduler runs the script once a day, or every few hours for fast-moving topics. Each run sends the same queries, compares the URLs with those already seen and reports only the new ones.

## Which queries should I watch?

Short, specific queries work best. Combine a name with an event: a company and "acquisition", a product and "recall", a law and "amendment". Broad queries return the same large outlets every day and hide the stories you care about.

Group queries by audience. A legal team, a product team and a sales team each want a different digest. One script can produce all three by tagging each query with its audience.

Use `country` and `language` when the news you need is local, for example `country=fr` and `language=fr` for French coverage.

*Node.js: daily news check with deduplication by URL*

```javascript
// Run once a day (cron, a scheduler or an n8n Schedule trigger). Node.js 18+ (built-in fetch).
import fs from 'node:fs';

const API = 'https://llmwebsearch.com/api/v1/search';
const KEY = process.env.LLMWEBSEARCH_API_KEY;
const SEEN_FILE = './seen-urls.json';
const QUERIES = ['example corp product recall', 'example corp acquisition', 'example industry regulation'];

const seen = new Set(fs.existsSync(SEEN_FILE) ? JSON.parse(fs.readFileSync(SEEN_FILE, 'utf8')) : []);
const fresh = [];

for (const q of QUERIES) {
  const res = await fetch(API, {
    method: 'POST',
    headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ q, topic: 'news', time_range: 'day', max_results: 10, read: 3, max_chars: 3000 }),
  });
  if (!res.ok) {
    console.error(q, res.status, await res.text());
    continue;
  }
  const { results } = await res.json();
  for (const r of results) {
    if (seen.has(r.url)) continue; // the same story found by two queries is reported once
    seen.add(r.url);
    fresh.push({ query: q, title: r.title, url: r.url, published_at: r.published_at, text: r.content });
  }
}

fs.writeFileSync(SEEN_FILE, JSON.stringify([...seen]));
for (const item of fresh) console.log(`${item.published_at ?? 'n/d'}  ${item.title}\n  ${item.url}`);
```

## How do I report each story only once?

Keep a list of URLs already reported and skip them on the next run. The script above stores that list in a small JSON file; a database table works the same way.

The same story often appears on several outlets, each with its own URL. Group results whose titles share most of their words, and show one headline with several links. The `published_at` field helps to order a group and to spot the first report.

Clear old URLs after a few weeks so the file does not grow forever. Stories older than your `time_range` cannot come back anyway.

## How do I turn new articles into a digest?

Send the new articles to a model with a fixed instruction: one line per story, what happened, who is involved, and the source number. Ask it to merge items that describe the same event.

Because the article text is already in the results, the model summarises what the article says, not what the headline suggests. Keep each article short with `max_chars` around 3,000; the first paragraphs of a news story carry the essentials.

## Which articles will not be read?

Articles behind a paywall or a login, and sites that refuse our reader. Those results still appear with their title, URL and snippet, and a `content_status` that explains the gap.

Our reader respects robots.txt: it introduces itself as LLMWebSearch, follows the rules a site writes for it or for all robots, and leaves out the content of any page it is not allowed to read. When a site turns our reader away, the result comes back without content and with the site's status: we never solve CAPTCHAs, sign in to accounts or work around a block or a paywall. For a paywalled outlet, the headline and snippet are often enough to flag the story; a person with a subscription can read the rest.

## What does a monitoring setup cost?

One credit per query per run. Fifty queries checked once a day use about 1,500 credits a month. 5,000 searches at $9.25 covers three months of that schedule.

Checking every three hours multiplies the count by eight: about 12,000 credits a month for the same fifty queries. 25,000 searches at $41.25 then covers two months. Reserve frequent checks for the few topics where hours matter.

## Which pack suits a monitoring schedule?

Queries × runs per day × 30 days. Search credits have no expiry date: what you do not use this month is still there next year.

| Plan | Quantity | Price | Price per unit |
| --- | --- | --- | --- |
| Try | 5,000 searches | $9.25 | $1.85/1K searches |
| Builder | 25,000 searches | $41.25 | $1.65/1K searches |
| Production | 100,000 searches | $145 | $1.45/1K searches |

In every plan: Top 3 pages read as Markdown · Country, language, time and domain filters · Failed calls not charged · Credits never expire

**Before you pay**

- Minimum top-up $25. Top up once in crypto, then buy any plan from your balance.
- Money on your balance does not expire and buys search credits whenever you want. When a pack is cheaper than the minimum top-up, the part you paid only to reach that minimum comes back to you on request within 30 days of payment, in USDT or USDC, provided it is still unspent. The rest of a balance is not returned unless the law requires it.
- Credited once your payment is checked on the blockchain. Typical network confirmation time: BTC ≈ 20 min · USDT TRC-20 ≈ 1 min · USDT ERC-20 ≈ 5 min · USDC ERC-20 ≈ 5 min · ETH ≈ 5 min · SOL ≈ 1 min · LTC ≈ 15 min

## News monitoring: common questions

### Can I run the check from n8n instead of a script?

Yes. Use a Schedule trigger and an HTTP Request node pointed at the search endpoint. The [n8n page](https://llmwebsearch.com/docs/n8n/) shows the settings.

### How recent are the results?

Results come from a live web search run at the moment of your call, in the order the search engine ranks them; nothing is served from an old index. With `time_range=day`, only items from the past day are kept.

### Can I monitor news in other languages?

Yes. Set `language` and `country` per query, so one script can follow several markets.

### What is in each news result?

Each result carries its position, title, URL, host, snippet and, when it was read, the page's main content as Markdown or plain text with its word count and publication date when known.

---

LLMWebSearch: LLMWebSearch is a web search API for AI agents that returns ranked results with the content of the top pages in Markdown, paid in crypto with no ID upload. Prepaid credits from $1.20/1K searches never expire. No KYC — no ID, no selfie, no documents. Pay in crypto.
