# Chrome Extension (Beta): Any Page Request as an API Call

> Source: <https://foura.ai/blog/chrome-extension-request-to-api-call>
> Published: 2026-10-23 05:22:20+00:00

## What's New

You know the routine. Open DevTools, reload, scroll through dozens of requests until one of them holds the prices you're after, right-click, Copy as cURL. Then the real work starts: strip the headers that only make sense inside Chrome, rewrite the thing for your own client, and find out whether it still answers when it doesn't come from your browser.

The [FourA Chrome extension](https://foura.ai/extension), now in beta, cuts that down to a few clicks. It adds a FourA tab next to Network that lists the page's requests, finds the one carrying a piece of text you can see, and copies it as a ready call to Single, Proxy Finder or Browser, in curl, Python, Node or MCP. The same extension has a popup that sends Chrome itself through one of your [proxy port](https://foura.ai/proxy) users.

It isn't in the Chrome Web Store yet. You download it under Tools in the Dashboard and load it in developer mode (Chrome, version 116 or newer). The extension is free; traffic through the tunnel counts against your plan's proxy allowance, and calls you run from DevTools cost what the API charges.

## How It Works

Open DevTools on the page you want to collect from and pick the FourA tab. Reload, and the tab lists requests the way Network does, with ads and analytics hidden by default and a This site only switch for the page's own requests. Type a price, a product name or any other text you see into **Find in responses**, and it points you at the requests whose response contains it. That's often the moment you discover the page renders from a JSON endpoint you can call directly.

Pick the request, choose an engine under **FourA call**, and copy. Here's the curl form for a JSON request on a shop page (trimmed: the real copy carries every header the page sent):

```
curl https://api.foura.ai/api/single \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "GET",
  "url": "https://shop.example.com/api/products?category=coffee&page=2",
  "headers": [
    ["accept", "application/json"],
    ["referer", "https://shop.example.com/coffee"],
    ["accept-language", "en-GB,en;q=0.9"]
  ],
  "browser": "Chrome",
  "os": "macOS",
  "unblocker": true
}'
```

Three things in that call are deliberate. Headers travel as a list of pairs, in the order the page sent them, which is the shape Single takes. The ones Chrome writes for its own connection (`host`, `content-length`, `accept-encoding`, `connection` and a few more) are dropped, because copying them breaks whatever client sends the call next. And `browser` plus `os` ask for the [browser profile](https://foura.ai/blog/browser-profiles-per-request) that matches the Chrome you're sitting in. The version is left out on purpose: the call gets the newest one we carry instead of being refused for a version we don't.

The MCP form is the tool name (`foura_single`) followed by the same JSON, ready for an agent that talks to our [MCP server](https://foura.ai/mcp).

Then come two buttons. **Open in the playground** loads the call into the Dashboard Playground, with the same key chosen when it's one of yours. **Run through FourA** sends it and puts "The browser got" and "FourA got" side by side, so you see whether our answer matches the page's before you write a line of code.

## Impact

The manual route is well documented. [ScrapingBee's tutorial](https://www.scrapingbee.com/tutorials/how-to-extract-curl-requests-from-chrome/) takes five steps just to get the cURL out of Chrome, and notes that the copy carries every header and cookie the browser sent. That's where most scrapers start. It's also only half the job, since the copy proves the request works from your browser and nowhere else.

The FourA tab covers both halves in one place. You find the request by what it returns instead of guessing from URLs, you get a call in the shape the API expects, and one click shows whether it holds up from our side. That pays off most on pages where the data arrives through a request whose URL tells you nothing.

We don't have numbers on time saved yet. It's a beta, and the honest measure is your next job.

## For Power Users

Switch the engine to **Proxy Finder** and the panel wraps the same request and offers an **Exit country**:

```
{
  "request": {
    "method": "GET",
    "url": "https://shop.example.com/api/products?category=coffee&page=2",
    "headers": [["accept", "application/json"]],
    "unblocker": true
  },
  "exitCountries": ["DE"]
}
```

`exitCountries` is a strict allowlist. The request never falls back to another country, and the country that served comes back as `exitCountry`. It's a plan feature, so a plan without country targeting answers with a refusal that says so.

**Browser** gets a different shape, because it opens pages rather than sending requests. It takes headers as an object, turns the page's `Cookie` header into a cookie list scoped to the host, and leaves out `user-agent` and the client-hint headers, since the engine sends its own (with the profile option on, it sends this window's user agent instead). It only replays a GET without a body. A POST from a search form belongs on Single, where a JSON body travels as an object and anything else as the exact string the page sent.

Right-click any request for the same copies plus Copy URL and Copy response. The API key for runs lives in the tab's Settings and stays until Chrome closes, unless you tick **Keep the key on this computer**.

One warning, and we mean it. A call copied with cookies replays the session you're signed into. Treat it like a password and keep it out of tickets, chats and public repos.

The popup side deserves a line too. It measures the address a site sees through the tunnel rather than reading it from your settings, and when that address equals your own it says **Not routed**. When the icon turns red with a number, the proxy refused that many connections in the last minute, and the popup says why. The [username options](https://foura.ai/blog/proxy-port-username-options) behind its Location page are the same ones the proxy port documents.

## What's Next

The extension stays a beta, installed from the Dashboard, until we call it finished, and we aren't putting a date on a Chrome Web Store listing. Chrome is the only browser it's built and tested for. The [setup guide](https://foura.ai/docs/dashboard/chrome-extension) describes what ships today; what changes next depends on what you run into when you point the FourA tab at a real job.

So next time a page fights your parser, open DevTools before you open the HTML. The cheapest scraper is often the one that calls the request the page already made.
