# Google Currency Conversion Rates Scraper (`googleapi/google-currency-conversion-rates-scraper`) Actor

Extract public Google Finance currency quotes and calculate conversions. Uses direct requests and bounded visible rendering for public-page data; access boundaries are reported and never bypassed.

- **URL**: https://apify.com/googleapi/google-currency-conversion-rates-scraper.md
- **Developed by:** [Google API](https://apify.com/googleapi) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Google Currency Conversion Rates Scraper

Fetch public Google Finance currency quote pages and calculate conversions from the displayed rate. Each record can include the currency pair, requested amount and converted amount, related currency assets, news, and currency profile. Undisclosed values remain `null` or empty rather than being guessed. Profile text is provided as readable text and sanitized HTML.

The Actor reads public Google Finance information only. It does not sign in, access private APIs, or bypass access controls. If a page is blocked or unavailable, the run summary and logs report it. `proxyConfiguration` is accepted for compatibility but does not route requests through a proxy.

### Input

The default pair is USD-EUR and the default amount is 1.

```json
{
  "currencyPair": "USD-EUR",
  "amount": 100
}
```

To fetch a list, provide `currencyPairs` and set `maxPages` high enough to cover the selected range. `page` is the one-based starting position in the deduplicated pair/URL list. `currencyPairs`, when nonempty, replaces the single `currencyPair`; `startUrls` can add supported public Google Finance quote URLs. `maxItems` is a global cap, and `maxResults` remains a backward-compatible alias.

```json
{
  "currencyPairs": ["USD-EUR", "GBP-EUR", "JPY-EUR"],
  "amount": 250,
  "page": 1,
  "maxPages": 3,
  "maxItems": 3
}
```

The input accepts `currencyPair` or `currencyPairs`, `fromCurrency`, `toCurrency`, and `amount`, plus public quote URLs in `startUrls`. `page` and `maxPages` select a range from the provided pairs and URLs; `maxItems` sets a global record limit. `maxResults` is an alias for `maxItems`. `proxyConfiguration` is accepted for compatibility but does not change the connection.

Currency codes must be three letters, and pairs may be written as `USD-EUR`, `USD/EUR`, or `USDEUR`. A malformed explicit pair/code is recorded as an invalid source rather than silently falling back to a different currency pair. `startUrls` must be HTTPS Google Finance quote pages.

### Dataset fields

Every normal output row is one currency-pair quote/conversion and has the same stable top-level shape:

| Field group | Fields |
|---|---|
| Pair and identity | `currencyPair`, `currencyPairLabel`, `conversionDirection`, `fromCurrency`, `toCurrency`, `fromName`, `toName`, `fromSymbol`, `toSymbol`, `quoteType`, `quoteSource`, `quotePageUrl` |
| Rate and conversion | `rate`, `roundedRate`, `rateText`, `rateUnit`, `inverseRate`, `inverseRoundedRate`, `roundingDecimals`, `amount`, `amountCurrency`, `convertedAmount`, `amountText`, `convertedAmountText`, `calculationText` |
| Quote time and movement | `quoteTimestamp`, `quoteTimestampText`, `quoteDate`, `quoteTime`, `quoteTimeZone`, `changeAbsolute`, `changePercent`, `changePeriod`, `changeText`, `previousClose`, `previousCloseText`, `marketStatus`, `tradingSession`, `isIndicative`, `isRealTime` |
| Related assets | `relatedAssets`, `relatedAssetsCount`, `hasRelatedAssets` |
| News cards | `newsStories`, `newsStoriesCount`, `hasNewsStories` |
| Currency profile | `profileText`, `profileHtml`, `profileUrl`, `hasProfile` |

`relatedAssets` can include currency-pair labels, displayed rates and movements, and links to other quote pages. `newsStories` can include the publisher, headline, publication wording, article link, and displayed publisher icon. Symbols appear only when explicitly shown; unknown symbols or trading sessions remain `null`. Yearless quote wording is kept without inventing a calendar date or timestamp.

Example row (the quote values are from a saved historical observation, not a current-rate guarantee):

```json
{
  "currencyPair": "USD-EUR",
  "currencyPairLabel": "USD / EUR",
  "conversionDirection": "USD to EUR",
  "fromCurrency": "USD",
  "toCurrency": "EUR",
  "fromName": "United States Dollar",
  "toName": "Euro",
  "fromSymbol": null,
  "toSymbol": null,
  "rate": 0.872,
  "roundedRate": 0.872,
  "rateText": "0.8720",
  "rateUnit": "EUR per USD",
  "inverseRate": 1.146788990826,
  "inverseRoundedRate": 1.1468,
  "roundingDecimals": 4,
  "amount": 100,
  "amountCurrency": "USD",
  "convertedAmount": 87.2,
  "amountText": "100 USD",
  "convertedAmountText": "87.2 EUR",
  "calculationText": "100 USD = 87.2 EUR",
  "quoteTimestamp": null,
  "quoteTimestampText": "Sep 21, 3:32:19 PM UTC",
  "quoteDate": null,
  "quoteTime": "3:32:19 PM",
  "quoteTimeZone": "UTC",
  "changeAbsolute": 0.00079,
  "changePercent": 0.09,
  "changePeriod": null,
  "changeText": "+0.09%(+0.00079)",
  "previousClose": null,
  "previousCloseText": null,
  "quoteType": "currency",
  "marketStatus": null,
  "tradingSession": null,
  "isIndicative": null,
  "isRealTime": null,
  "quotePageUrl": "https://www.google.com/finance/quote/USD-EUR?hl=en",
  "quoteSource": "Google Finance",
  "relatedAssets": [
    {
      "currencyPair": "JPY-EUR",
      "pairLabel": "JPY / EUR",
      "rate": 0.0055,
      "rateText": "0.0055",
      "changePercent": -0.19,
      "changeText": "-0.19%",
      "quoteUrl": "https://www.google.com/finance/quote/JPY-EUR?hl=en"
    }
  ],
  "relatedAssetsCount": 1,
  "hasRelatedAssets": true,
  "newsStories": [
    {
      "publisher": "FXEmpire",
      "publishedText": null,
      "title": "Copper, EUR/USD and DAX Forecast: Key Breakouts in Focus",
      "articleUrl": "https://www.fxempire.com/forecasts/article/premium-copper-eur-usd-and-dax-forecast-key-breakouts-in-focus-1630456?_c=298531",
      "thumbnailAlt": "FXEmpire",
      "publisherLogoUrl": null
    }
  ],
  "newsStoriesCount": 1,
  "hasNewsStories": true,
  "profileText": "The United States dollar is the official currency of the United States and several other countries.",
  "profileUrl": "https://en.wikipedia.org/wiki/United_States_dollar",
  "hasProfile": true
}
```

### Run summaries and access behavior

The dataset and run summary with source-access information are available in the Output tab. You can download dataset records in formats such as JSON, HTML, CSV, or Excel. If Google blocks a page or no quote can be read, the run summary and logs report the issue instead of adding a conversion record.

# Actor input Schema

## `currencyPair` (type: `string`):

Primary pair such as USD-EUR or USDEUR. When omitted, fromCurrency and toCurrency are used.

## `fromCurrency` (type: `string`):

Three-letter source currency used when currencyPair is omitted.

## `toCurrency` (type: `string`):

Three-letter destination currency used when currencyPair is omitted.

## `amount` (type: `number`):

Amount in the source currency. The Actor calculates the converted amount using the disclosed quote rate.

## `currencyPairs` (type: `array`):

Optional list of pairs such as GBP-EUR and USDEUR. When supplied, this list replaces the primary currencyPair.

## `startUrls` (type: `array`):

Optional public Google Finance currency quote URLs. Only supported Google Finance quote pages are accepted.

## `page` (type: `integer`):

One-based starting position within the normalized currency-pair and quote-URL list.

## `maxPages` (type: `integer`):

Maximum number of quote pages to fetch, beginning at page.

## `maxItems` (type: `integer`):

Global limit on valid conversion records emitted.

## `maxResults` (type: `integer`):

Backward-compatible alias for maxItems. maxItems takes precedence when both are supplied.

## `proxyConfiguration` (type: `object`):

Compatibility field only. This Actor uses direct requests and ignores proxy settings; supplying this field does not route traffic through a proxy or bypass access controls.

## Actor input object example

```json
{
  "fromCurrency": "USD",
  "toCurrency": "EUR",
  "amount": 1,
  "currencyPairs": [],
  "startUrls": [],
  "page": 1,
  "maxPages": 1,
  "maxItems": 25
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

## `runHealth` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("googleapi/google-currency-conversion-rates-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("googleapi/google-currency-conversion-rates-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call googleapi/google-currency-conversion-rates-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,googleapi/google-currency-conversion-rates-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CyMMm8esdrSDUiWZH/builds/1gJBa0ZeGSlcyyZH7/openapi.json
