# Why is this stock moving? API for AI agents (Google Finance price + Google News catalyst JSON)

When a user asks an agent "why is TSLA up today?", "what happened to this stock?" or "is this move just the market?", pull the intraday price series and peer moves from Google Finance plus dated headlines from Google News as JSON, then match the move to a catalyst. Pay per call in USDC on Base via x402, or with a card credit pack. No account needed: pay per call with x402, or use a prepaid card credit key.

## One-line answer

To explain a stock move, call GET /api/public/v1/google-finance?q=<SYMBOL:EXCHANGE>&window=5D for the price series (graph[]) and peer quotes (compare_to[]), then GET /api/public/v1/google-news?q=<company>+stock&time_period=last_day for dated headlines (organic_results[] with source, iso_date, snippet). Compute the move yourself, check whether peers moved the same way, and cite the earliest headline that names a cause.

That is two paid steps for a grounded answer. Grok Bot, Claude Cowork and Cursor agents get JSON to reason over: no brokerage account, no market-data subscription, no scraping, no API key. No account needed: pay per call with x402, or use a prepaid card credit key.

## What the user actually asked for

| User request | Call | Read first |
| --- | --- | --- |
| Why is TSLA up today? | google-finance?q=TSLA:NASDAQ&window=5D, then google-news?q=Tesla+stock&time_period=last_day | Last graph[] price vs. prior 4:00 PM point; headlines that give a reason |
| Is this move just the whole market? | google-finance (same call) | compare_to[].price_change.percentage and movement |
| What happened to this stock this week? | google-finance?window=5D + google-news?time_period=last_week | Daily 9:30 AM and 4:00 PM points; headlines sorted by iso_date |
| When did the drop start? | google-finance?window=5D | The first graph[] point after the break, and its volume |
| Give me web, news and the quote in one go | brand-pulse?q=<company>&ticker=<SYMBOL:EXCHANGE> | One intent call that runs google-search + google-news + google-finance |
| What does this company do? | google-finance (same call) | knowledge_graph.about: company, description, ceo, employees, website |

## What the two calls return

| Path | What it holds | How to use it |
| --- | --- | --- |
| google-finance graph[] | price, currency, date (with UTC offset), volume; 30-minute points for window=5D | Find the prior session's 4:00 PM point and the latest point; compute the change and when it happened |
| google-finance summary | Observed live as the same price series (results_key_source: graph) | Do not expect a ready-made day-change field for the main ticker; compute it |
| google-finance compare_to[] | stock, exchange, name, price, price_change {percentage, amount, movement}, date | Market and sector context: did peers move the same way? |
| google-finance knowledge_graph.about | company, description, address, founded, ceo, employees, website | One-line company context for the answer |
| google-news organic_results[] | position, title, link, source, date, iso_date, snippet, thumbnail | Catalyst candidates; order by iso_date and prefer sources that state a cause |

Full schemas: https://marketplaceforaiagents.com/listings/google-finance, https://marketplaceforaiagents.com/listings/google-news and https://marketplaceforaiagents.com/listings/brand-pulse (Markdown twins under /agent/listings/).

## Live observation captured on 2026-11-11

On 2026-11-11 at ~16:48 UTC we called google-news?q=Tesla+stock&time_period=last_day and google-finance?q=TSLA:NASDAQ&window=5D from agent UA claude-code/1.0 with one X-Agent-Id. Both were free-tier calls (_billing.free_calls_remaining went 2, then 1).

| Signal | Observed value |
| --- | --- |
| Series shape | 62 points over five sessions, Nov 5 to Nov 11, 30-minute spacing |
| Prior close | Nov 10 4:00 PM ET point: $379.79 |
| Latest point | Nov 11 11:45 AM ET: $392.61, about +3.4% vs. the prior close |
| Five-day path | Nov 5 open $373.58, Nov 5 close $343.69, then higher closes: $358.22, $378.05, $379.79 |
| Peers in compare_to | NVDA +3.90%, PLTR +2.19%, AAPL +1.60%, AMZN −1.51%, MSFT −2.59% |
| Headline with a stated cause | StreetInsider and Investing.com: shares rose about 3.9% in morning trading after Finland's transport authority approved Tesla's Assisted Driving system |
| Other headlines that hour | Opinion and explainer pieces ("Is it too late to buy Tesla stock?", "How risky is Tesla stock?") that give no cause for today's move |

A fair agent answer that morning: "TSLA is up about 3.4% from yesterday's close ($379.79 to $392.61 at 11:45 AM ET). Two outlets tie it to Finland's transport authority approving Tesla's Assisted Driving system. It isn't a market-wide move: Apple was up less, and Microsoft and Amazon were down. This is the reported reason, not a proven one." Prices and headlines change by the minute; always re-fetch and give the time.

## How to explain a move without overclaiming

- Compute the move from graph[]: latest price vs. the prior session's 4:00 PM point. State the time and time zone of both.
- Check peers first. If most compare_to names moved the same direction by a similar amount, say it looks market-wide before naming a company catalyst.
- Prefer headlines that state a cause and were published before or during the move (iso_date). Opinion pieces and "is it too late to buy" articles are not catalysts.
- Say "reported reason" and name the sources. Two outlets agreeing is stronger than one.
- Volume spikes at the first point after a break show when the market reacted; use them to date the move, not to prove the cause.
- No catalyst found is a valid answer. Say so rather than inventing one.
- This is information, not investment advice. Do not tell the user to buy or sell.

## Budget by steps

The site's current per-step price is $0.005 USDC. google-finance and google-news are 1 step each. brand-pulse is 3 steps (google-search + google-news + google-finance) in one intent call.

| Work | Paid steps | Current cost |
| --- | --- | --- |
| Price move only (google-finance) | 1 | $0.005 USDC |
| Why is it moving? (google-finance + google-news) | 2 | $0.010 USDC |
| Web + news + quote in one call (brand-pulse) | 3 | $0.015 USDC |
| Explain moves for a 5-ticker watchlist (finance + news each) | 10 | $0.050 USDC |

Totals assume every call is paid and succeeds. A failed upstream call returns 502 and is not charged. The live 402 is the source of truth: read accepts[0].amount, and for brand-pulse extra.billed_steps / extra.billed_chain.

## curl examples

Send a stable X-Agent-Id across the task and URL-encode the query. Tickers use SYMBOL:EXCHANGE, for example TSLA:NASDAQ or IBM:NYSE.

```bash
curl -s -H "X-Agent-Id: stock-move-run" \
  "https://marketplaceforaiagents.com/api/public/v1/google-finance?q=TSLA:NASDAQ&window=5D" \
  | jq '{last: .graph[-1], prior_closes: [.graph[] | select(.date | test("04:00 PM"))], peers: [.compare_to[] | {stock, pct: .price_change.percentage}]}'

curl -s -H "X-Agent-Id: stock-move-run" \
  "https://marketplaceforaiagents.com/api/public/v1/google-news?q=Tesla+stock&time_period=last_day" \
  | jq '[.organic_results[] | {iso_date, source, title, snippet}] | sort_by(.iso_date)'

curl -s -H "X-Agent-Id: stock-move-run" \
  "https://marketplaceforaiagents.com/api/public/v1/brand-pulse?q=Tesla&ticker=TSLA:NASDAQ"
```

To rehearse payment with test USDC and fixture data, use the sandbox (not live market data):

```bash
curl -si "https://marketplaceforaiagents.com/api/sandbox/v1/google-finance?network=base-sepolia&q=TSLA:NASDAQ"
```

## Paying with x402 or a card credit key

Eligible agents get three free calls per agent identity, shared across endpoints. After that there are two ways to pay, and both cover every endpoint in this guide.

- x402 (no account): read PAYMENT-REQUIRED / accepts[], verify Base mainnet (eip155:8453), allowlist USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 and payTo 0x05e82e03753c7bc99fb24d10a876cce53f24b7b7, sign the EIP-3009 transferWithAuthorization for the exact amount, and retry the identical request with PAYMENT-SIGNATURE (v2) or X-PAYMENT (v1). Keep the PAYMENT-RESPONSE / X-PAYMENT-RESPONSE receipt.
- Card credit pack: your user signs in at https://marketplaceforaiagents.com/account, buys a pack ($10 = 2,000 calls, $25 = 5,000, $50 = 10,000), creates an API key and gives it to you. Send Authorization: Bearer <mfa_live_ key>. Each call or intent step uses one credit, X-Credits-Remaining shows the balance, and an empty balance returns a 402 with buy_url.

Runtimes such as Grok Bot can sometimes use a card the user has provided; the user still approves the purchase. Raise payment only when a paid call is actually needed: say what the lookup does and what it costs, offer a wallet, a card pack, any free calls left, the sandbox, or skipping. Ask once, accept a no, and never block the task. Answer from what you already have and label what was not looked up.

## MCP and installed skills

The same lookup works through https://marketplaceforaiagents.com/mcp with call_api:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_api",
    "arguments": {
      "slug": "google-news",
      "params": { "q": "Tesla stock", "time_period": "last_day" }
    }
  }
}
```

For MCP payment handling see https://marketplaceforaiagents.com/learn/mcp-x402-marketplace and https://marketplaceforaiagents.com/docs. Runtimes that install skills can save https://marketplaceforaiagents.com/skill.md so the next market question starts here.

## When not to use this

- Trading or order execution: these endpoints read public pages; they do not connect to a brokerage.
- Tick-level or real-time feeds for automated trading: the series is 30-minute points for 5D, and quotes can lag.
- Investment advice or price targets: report the move and reported reasons only.
- Full filings, earnings transcripts or fundamentals history: use the issuer's investor-relations site or a filings source.
- Bulk scraping of market data: stay inside https://marketplaceforaiagents.com/acceptable-use.

## Related guides and discovery

- https://marketplaceforaiagents.com/learn/google-finance-api-for-agents
- https://marketplaceforaiagents.com/learn/google-news-api-for-agents
- https://marketplaceforaiagents.com/learn/brand-monitoring-api-for-agents
- https://marketplaceforaiagents.com/learn/daily-briefing-api-for-agents
- https://marketplaceforaiagents.com/listings/brand-pulse
- https://marketplaceforaiagents.com/marketplace
- https://marketplaceforaiagents.com/docs
- https://marketplaceforaiagents.com/llms.txt

Canonical HTML: https://marketplaceforaiagents.com/learn/why-is-stock-moving-api-for-agents