October special: $0.003 per call (normally $0.005) through Oct 31.
← Learn

Brand monitoring API for AI agents (web, news & stock quote JSON in one call, no API key)

When a user asks an agent to monitor a brand, check what the press is saying about a company, or pull a due-diligence snapshot before a meeting, call the machine-payable brand-pulse intent (Google Search + Google News + Google Finance in one response) plus news-brief, bing-news and google-trends for a second index and momentum. JSON out, no API key, no media-monitoring seat; settlement via x402 USDC on Base after three free evaluation calls.

Grok Bot, Claude Cowork and Cursor agents get handed brand work constantly: "what are people saying about Acme this week," "give me a snapshot of this company before my 2pm," "keep an eye on our competitor," "did anything happen to NVDA overnight." Each of those needs three things at once: what the web shows for the name, what the press published recently, and (for a public company) where the stock is trading. Media-monitoring suites sell that as a seat with a login and a dashboard, which an unattended agent cannot buy or read.

One-line answer: call GET https://marketplaceforaiagents.com/api/public/v1/brand-pulse?q=<brand>&ticker=<SYMBOL:EXCHANGE> and read results["google-search"], results["google-news"] and results["google-finance"]. It is one intent call that chains three engines server-side. The first 3 calls per agent identity are free across the whole marketplace; after that each step is settled over x402 in USDC on Base (regular price $0.005 per step; promotional pricing, when active, is advertised in the 402 and the site banner, so always trust the live 402 amount). No account, no API key, no monthly plan.

Endpoint contracts

EndpointRequiredOptionalResults keyBest for
GET /api/public/v1/brand-pulseqticker (Finance symbol), hlresults (google-search, google-news, google-finance)One-shot brand snapshot: web presence, press, quote
GET /api/public/v1/news-briefqgl, hlresults (google-news, bing-news)Press coverage from two independent news indexes
GET /api/public/v1/google-newsqlocation, gl, hlnews_resultsRecent articles with source, date and link
GET /api/public/v1/bing-newsqcountnews_resultsSecond-opinion news index with publish time
GET /api/public/v1/google-financeq (ticker)hlsummaryQuote, price movement and key stats for a public company
GET /api/public/v1/google-trendsqgeo, date, data_typeinterest_over_timeIs attention on the brand rising or fading?
GET /api/public/v1/serp-stackqgl, hl, numresults (Google, Bing, DuckDuckGo)What each search engine ranks for the brand name

brand-pulse is an intent: the server runs google-search, then google-news, then google-finance and returns them under results keyed by engine name. The response also carries intent, chain, steps_run, billed_steps and price, so the agent can log exactly what it bought. One brand-pulse invocation consumes one free-tier call, not three.

Listings: https://marketplaceforaiagents.com/listings/brand-pulse, https://marketplaceforaiagents.com/listings/news-brief, https://marketplaceforaiagents.com/listings/google-finance. Full machine spec per endpoint: https://marketplaceforaiagents.com/agent/listings/brand-pulse.md.

Ticker format: use SYMBOL:EXCHANGE

The Finance step looks the symbol up the way Google Finance's own quote pages do, which is SYMBOL:EXCHANGE, for example NVDA:NASDAQ, AAPL:NASDAQ or KO:NYSE. The gateway normalizes the ticker server-side, so EXCHANGE:SYMBOL (NASDAQ:NVDA) and a bare ticker (NVDA) are converted to SYMBOL:EXCHANGE (NVDA:NASDAQ) before the lookup; sending SYMBOL:EXCHANGE yourself is still the clearest form.

  • Always pass ticker explicitly for a public company. If you omit it, the Finance step uses q, and a brand name like "Nvidia" is not a ticker.
  • Check results["google-finance"].error before quoting a price. If it is present, say the quote was unavailable rather than inventing one, or retry once with google-finance using the other symbol order.
  • For a private company or a product brand, skip the quote: call news-brief plus google-search (or serp-stack) instead of brand-pulse, so you do not pay for a Finance step that cannot return anything.

Agent workflow: brand snapshot to cited brief

  • Resolve the entity: confirm the exact brand name and, if public, its SYMBOL:EXCHANGE ticker. Ambiguous names (Delta, Apple, Mercury) need a disambiguating word in q.
  • Snapshot: call brand-pulse?q=<brand>&ticker=<SYMBOL:EXCHANGE>.
  • Press: read results["google-news"].news_results[] and sort by iso_date. Keep title, source, iso_date and link. Google News links can arrive as google.com redirect URLs, so cite the source name and date alongside the link.
  • Web presence: read results["google-search"].organic_results[] for the official site, Wikipedia, review sites and anything negative ranking on page one. top_stories and related_questions are often present too.
  • Quote: read results["google-finance"] for the current price and movement, after checking for an error field.
  • Second index (optional): call news-brief?q=<brand> when the user wants coverage beyond Google News, or bing-news on its own.
  • Momentum (optional): call google-trends?q=<brand> to tell the user whether attention is spiking or normal.
  • Report: summarize sentiment and the 3 to 5 stories that matter, each with source, date and link. Never invent a headline, quote or price.

Responses are large. Our 2026-10-13 brand-pulse call for Nvidia was roughly 190 KB of JSON, most of it search metadata. Extract the keys above in code before you put anything in your context window.

ts
import { wrapFetchWithPayment } from "x402-fetch";
const pay = wrapFetchWithPayment(fetch, wallet);

const base = "https://marketplaceforaiagents.com/api/public/v1";
const res = await pay(`${base}/brand-pulse?q=Nvidia&ticker=NVDA:NASDAQ`);
const pulse = await res.json();

const news = (pulse.results["google-news"]?.news_results ?? [])
  .map((n) => ({ title: n.title, source: n.source, date: n.iso_date, link: n.link }))
  .sort((a, b) => (b.date ?? "").localeCompare(a.date ?? ""))
  .slice(0, 5);
const web = (pulse.results["google-search"]?.organic_results ?? [])
  .slice(0, 5)
  .map((r) => ({ title: r.title, link: r.link }));
const finance = pulse.results["google-finance"];
const quote = finance?.error ? null : finance?.summary;

console.log(pulse.chain, pulse.billed_steps, pulse.price);

Paying with x402: what the 402 tells you

x402 USDC on Base is the no-account rail: the agent needs a funded wallet, not a media-monitoring subscription, a news API key or a Google Cloud project, so it can buy exactly the calls one brief needs and stop. Charges settle only when the upstream call succeeds; a failed upstream call returns 502 upstream_error and is not charged.

After the free tier, an unpaid brand-pulse request returns HTTP 402. The requirement spells out the whole chain, so the agent can approve the total before signing:

bash
curl -i "https://marketplaceforaiagents.com/api/public/v1/brand-pulse?q=Nvidia&ticker=NVDA:NASDAQ"

HTTP/2 402
{
  "x402Version": 2,
  "error": "payment_required",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "<live total, atomic USDC>",
      "payTo": "0x05e82e03753c7bc99fb24d10a876cce53f24b7b7",
      "maxTimeoutSeconds": 60,
      "extra": {
        "steps": 3,
        "perStep": "<live per-step price>",
        "total": "<live total>",
        "chain": ["google-search", "google-news", "google-finance"]
      }
    }
  ],
  "acceptsV1": [ { "network": "base", "maxAmountRequired": "<live total, atomic USDC>", ... } ]
}

Validate network, asset and payTo against your allowlist, check extra.total against the task budget, sign the EIP-3009 USDC authorization, base64-encode the x402 payload and resend the same URL with an X-PAYMENT header. The settlement receipt comes back in the X-PAYMENT-RESPONSE header. x402 v1 clients can use acceptsV1, which carries the same requirement in the older shape.

RunCallsStepsAt regular $0.005 per step
1 brand-pulse (search + news + finance)13$0.015
1 brand-pulse + 1 news-brief (adds Bing News and a second Google News pass)25$0.025
1 brand-pulse + 1 news-brief + 1 google-trends36$0.030
Private brand: 1 news-brief + 1 google-search23$0.015
Daily watch on 5 competitors, brand-pulse each, 22 weekdays110330$1.65 per month

Budget formula: total steps times the live per-step price. Set a per-task and per-day USDC cap, and debit only from successful X-PAYMENT-RESPONSE receipts. See https://marketplaceforaiagents.com/learn/budget-x402-api-calls for a full spend-policy pattern.

Recurring monitoring

Brand watching is usually a standing job, not a one-off. Agent runtimes with scheduled routines (Grok Bot routines, or a cron job that wakes a Cursor or Claude Cowork agent) can run brand-pulse each weekday morning and alert only when something changed.

  • Store the links you already reported per brand. Each run, alert only on news_results whose link or title is new.
  • Alert on quote moves past a threshold the user chose, not on every tick.
  • Run google-trends weekly rather than daily; interest series move slowly and the extra step adds cost without adding signal.
  • Keep the run on weekday working hours unless the user asked for overnight coverage, and cap the monthly spend in the routine itself.

MCP

The same endpoints are reachable through the site's MCP server at https://marketplaceforaiagents.com/mcp (streamable HTTP, no auth; payment is the auth). Use list_apis to find brand-pulse, news-brief, google-news, bing-news, google-finance and google-trends, get_payment_requirements to read the live price, and call_api with the slug to execute a call, paying via _meta["x402/payment"]. Setup details: https://marketplaceforaiagents.com/learn/mcp-x402-marketplace.

Agent playbook

User askCall
What's the latest on Acme?news-brief?q=Acme
Give me a snapshot of this public companybrand-pulse?q=Nvidia&ticker=NVDA:NASDAQ
Where is the stock right now?google-finance?q=NVDA:NASDAQ
What shows up when people search our brand?serp-stack?q=Acme or google-search?q=Acme
Is interest in our competitor growing?google-trends?q=Competitor
Is this viral claim about the brand true?See https://marketplaceforaiagents.com/learn/fact-check-api-for-agents
What do customers say about the product?amazon-reviews?asin=… or google-maps-reviews?place_id=…

FAQ

Do I need a news API key or a media-monitoring account? No. Calls are paid per call with x402 USDC on Base; there is no signup, OAuth or dashboard.

Does brand-pulse work for private companies? The search and news steps do. The Finance step only returns data for listed tickers, so for private brands call news-brief and google-search instead.

Why did the quote come back empty? Usually the ticker format. Pass SYMBOL:EXCHANGE (NVDA:NASDAQ) and check results["google-finance"].error before citing anything.

How many free calls do I get? 3 per agent identity across all endpoints; a brand-pulse intent counts as one free-tier call even though it runs three steps.

What price should my agent expect? Regular $0.005 USDC per step, so $0.015 for a brand-pulse call. Read the live 402 for the current amount, since promotional pricing may be lower.

Can I smoke-test without mainnet USDC? Yes. Append ?network=base-sepolia for testnet USDC and mock-shaped responses.

Related entrypoints

  • Marketplace: https://marketplaceforaiagents.com/marketplace
  • Docs: https://marketplaceforaiagents.com/docs
  • llms.txt: https://marketplaceforaiagents.com/llms.txt
  • Brand Pulse listing: https://marketplaceforaiagents.com/listings/brand-pulse
  • Google News API for agents: https://marketplaceforaiagents.com/learn/google-news-api-for-agents
  • Google Finance API for agents: https://marketplaceforaiagents.com/learn/google-finance-api-for-agents
  • Google Trends API for agents: https://marketplaceforaiagents.com/learn/google-trends-api-for-agents
  • Fact-check API for agents: https://marketplaceforaiagents.com/learn/fact-check-api-for-agents
  • How agents budget x402 API calls: https://marketplaceforaiagents.com/learn/budget-x402-api-calls
  • x402 protocol explained: https://marketplaceforaiagents.com/learn/x402-protocol-explained

Capability first, payment second: one call gets the web, the press and the quote for a brand as JSON, and x402 USDC on Base settles it only when the free tier is spent.