# Competitor research API for AI agents (pricing, hiring, patents & app store JSON, no API key)

When a user asks an agent to research a competitor (what they charge, who they are hiring, what they are patenting, how their apps rate, and whether their category is rising), call machine-payable cross-store-price, google-jobs, google-patents, aso-dual, trend-then-serp and brand-pulse endpoints that return JSON. No SerpAPI key, no LinkedIn or App Store Connect access, no market-intelligence seat; settlement via x402 USDC on Base after three free evaluation calls.

The user asks Grok Bot, Claude Cowork or a Cursor agent for a competitor brief: what a rival charges, where they are hiring, what they are filing patents on, how their apps rate on both stores, and whether the category is gaining search interest. Those answers live in five different public indexes, and each one normally means a separate account, key or scraping job.

One-line answer: fan out over GET https://marketplaceforaiagents.com/api/public/v1/{slug} with slugs cross-store-price (pricing), google-jobs (hiring), google-patents (IP), aso-dual (apps on Google Play + Apple App Store) and trend-then-serp (momentum + who ranks). Every response is JSON. The first 3 calls per agent identity are free across all endpoints; after that you pay per call with x402 in USDC on Base, with no signup and no API key. One intent invocation consumes one free-tier call, not one per engine step.

The regular price is $0.005 USDC per engine step; intents cost the per-step price times the steps that will run for your params. Always trust the live 402 accepts[0].amount (maxAmountRequired on v1) and extra.billed_steps / extra.billed_chain for the current total, including any promotion shown in the site banner. Do not bake a promotional amount into a recurring research workflow.

## Map the competitor question to an endpoint

| Question the user asked | Endpoint | Required | Optional | Results key | Steps |
| --- | --- | --- | --- | --- | --- |
| What do they charge, and where is it cheapest? | GET /api/public/v1/cross-store-price | q | gl, hl | results (google-shopping, amazon-search, ebay-search, walmart-search) | 4 |
| Who are they hiring, and where? | GET /api/public/v1/google-jobs | q | location, gl, hl, next_page_token | jobs | 1 |
| What are they patenting? | GET /api/public/v1/google-patents | q | num, page | organic_results | 1 |
| Do they ship on both app stores, and how do they rate? | GET /api/public/v1/aso-dual | q | country, gl, hl | results (google-play, apple-app-store) | 2 |
| Is the category rising, and who ranks for it? | GET /api/public/v1/trend-then-serp | q | geo, time, gl, hl | results (google-trends, google-search) | 2 |
| What is the press saying, plus the stock quote? | GET /api/public/v1/brand-pulse | q | ticker, hl | results | Read extra.billed_steps in the 402 |

Single-engine fallbacks when you need one surface or extra parameters: google-shopping, amazon-search, walmart-search, ebay-search, google-play, apple-app-store, google-trends, google-search, google-news and google-finance. For google-finance and the brand-pulse ticker, pass SYMBOL:EXCHANGE (for example NVDA:NASDAQ).

- Cross-store price: https://marketplaceforaiagents.com/listings/cross-store-price (Markdown: https://marketplaceforaiagents.com/agent/listings/cross-store-price.md)
- Google Jobs: https://marketplaceforaiagents.com/listings/google-jobs (Markdown: https://marketplaceforaiagents.com/agent/listings/google-jobs.md)
- Google Patents: https://marketplaceforaiagents.com/listings/google-patents (Markdown: https://marketplaceforaiagents.com/agent/listings/google-patents.md)
- Dual app store: https://marketplaceforaiagents.com/listings/aso-dual (Markdown: https://marketplaceforaiagents.com/agent/listings/aso-dual.md)
- Trend then SERP: https://marketplaceforaiagents.com/listings/trend-then-serp (Markdown: https://marketplaceforaiagents.com/agent/listings/trend-then-serp.md)
- Brand pulse: https://marketplaceforaiagents.com/listings/brand-pulse (Markdown: https://marketplaceforaiagents.com/agent/listings/brand-pulse.md)

## What comes back (from live calls on 2026-10-19)

These are dated observations from live calls on 2026-10-19, not permanent rankings or guaranteed field presence. Treat every field as optional and check for it before you use it.

| Call | Extractable fields observed | What it taught us |
| --- | --- | --- |
| google-jobs?q=machine+learning+engineer+Anthropic | jobs[].title, company_name, location, via (for example "via LinkedIn", "via Indeed"), detected_extensions.posted_at, schedule, salary (when present) | The query also matches job titles that merely mention the company: the top hit was an Anthropic posting, but the next rows were another employer's roles with "Anthropic/Claude" in the title. Filter on company_name before counting hires. |
| google-patents?q=Anthropic+language+model&num=5 | organic_results[].title, assignee, priority_date, filing_date, grant_date (granted patents only), publication_number, patent_id | Free-text q matches the topic, not the owner. The top results were assigned to other companies, so filter on assignee before attributing a filing to the competitor. |
| aso-dual?q=Perplexity | apple-app-store organic_results[].title, developer.name, developer.id, rating, id, price.is_free, link; google-play organic_results nests app rows under items | HTTP 200, chain and billed_chain [google-play, apple-app-store], steps_run 2, billed_steps 2. Neighbouring competitor apps appear in the same result list, which is useful for a category map. |
| trend-then-serp?q=AI+browser&geo=US | google-trends.interest_over_time.timeline_data; google-search organic_results, ads, ai_overview, related_questions, related_searches | HTTP 200, steps_run 2, billed_steps 2. Ads on the SERP show who is paying to rank for the category. |

Intent responses carry intent, chain, steps_run, billed_steps, billed_chain and price next to results; every response also carries a _billing block with free_calls_remaining and price_usdc_per_call. The aso-dual and trend-then-serp calls above each reported price $0.006 under the promotion active on 2026-10-19. That is a historical observed total, not a permanent price.

## A one-pass competitor brief

Run the fan-out in parallel, then join on the competitor name. Replace the example values with the competitor, product and category the user named.

```bash
BASE=https://marketplaceforaiagents.com/api/public/v1
curl -s "$BASE/cross-store-price?q=Meta+Quest+3"                 # pricing, 4 steps
curl -s "$BASE/google-jobs?q=Perplexity&location=United+States"   # hiring, 1 step
curl -s "$BASE/google-patents?q=conversational+search+citations"  # IP, 1 step
curl -s "$BASE/aso-dual?q=Perplexity"                             # apps, 2 steps
curl -s "$BASE/trend-then-serp?q=AI+answer+engine&geo=US"         # momentum, 2 steps
```

Budget before you start: that brief is 4 + 1 + 1 + 2 + 2 = 10 engine steps, or $0.05 USDC at the regular $0.005 per step. Five calls means the first three can land in the free tier for a new agent identity; the rest return 402 with the exact amount to sign.

- Pricing: take the lowest offer per surface from results["google-shopping"], results["amazon-search"], results["ebay-search"] and results["walmart-search"], and report the spread, not just the minimum.
- Hiring: keep only rows whose company_name matches the competitor, dedupe on title + location, and bucket by function and location. posted_at is a relative string ("21 days ago"), so stamp it with your call date.
- Patents: keep rows whose assignee matches the competitor; sort by priority_date to see what they are working on now.
- Apps: compare rating, developer and price.is_free across both stores, and list the neighbouring apps as the competitive set.
- Momentum: read the slope of timeline_data, then list who holds the top organic and ad positions for the category term.

## Paying with x402: no account, no key

Call the endpoint with no payment header. Inside the free tier you get the JSON and an X-Free-Calls-Remaining header. After it, you get 402 Payment Required with an accepts array that states exactly what to pay.

- Check accepts[0] against your allowlist before signing: network base, asset USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x05e82e03753c7bc99fb24d10a876cce53f24b7b7, scheme exact, and an amount within your per-call budget.
- For intents, confirm extra.billed_steps and extra.billed_chain match the engines you meant to run.
- Sign an EIP-3009 USDC transferWithAuthorization for that amount and resend the same request with the X-PAYMENT header (PAYMENT-SIGNATURE is also accepted).
- Read the settlement receipt from X-PAYMENT-RESPONSE (or PAYMENT-RESPONSE) and log the debit only from that receipt.
- You are charged only on an upstream 2xx. A failed upstream returns 502 upstream_error unsettled, and a paid intent whose steps do not match the quote returns 502 intent_quote_mismatch unsettled.

Test the whole loop first on Base Sepolia with testnet USDC and fixture data: https://marketplaceforaiagents.com/docs/sandbox. Client code for @x402/fetch, @x402/axios, Python httpx and raw HTTP is in https://marketplaceforaiagents.com/docs/quickstart.

## Calling it over MCP

Agents that prefer tools over raw HTTP can connect the public MCP server at https://marketplaceforaiagents.com/mcp (streamable HTTP, no OAuth, no signup). call_api runs any slug above with the same parameters; pay with x402 through _meta["x402/payment"]. Registry manifest: https://marketplaceforaiagents.com/server.json.

## Guardrails for competitor research

- Stick to public data. These endpoints return what public search, jobs, patent and app-store indexes show; they do not reach private dashboards or logged-in pages. Follow the Acceptable Use Policy: https://marketplaceforaiagents.com/acceptable-use.
- Attribute carefully. Job and patent queries match text, not ownership, so filter on company_name and assignee before you say "they are hiring" or "they filed".
- Date everything. Prices, ratings, rankings and posting ages change daily; put the call date next to every number in the brief.
- Cap spend per brief. Sum the steps before fanning out and stop if a 402 asks for more than you budgeted.

## Related

- Full catalog: https://marketplaceforaiagents.com/marketplace and https://marketplaceforaiagents.com/api/public/v1/catalog.json
- Agent docs: https://marketplaceforaiagents.com/docs and https://marketplaceforaiagents.com/llms.txt
- Google Jobs API for agents: https://marketplaceforaiagents.com/learn/google-jobs-api-for-agents
- Google Patents API for agents: https://marketplaceforaiagents.com/learn/google-patents-api-for-agents
- App Store API for agents: https://marketplaceforaiagents.com/learn/app-store-api-for-agents
- Cross-store price API for agents: https://marketplaceforaiagents.com/learn/cross-store-price-api-for-agents
- Brand monitoring API for agents: https://marketplaceforaiagents.com/learn/brand-monitoring-api-for-agents
- How AI agents budget x402 API calls: https://marketplaceforaiagents.com/learn/budget-x402-api-calls

Canonical HTML: https://marketplaceforaiagents.com/learn/competitor-research-api-for-agents