Official Libraries

We offer official libraries in multiple programming languages.

Learn More

Quick Start

https://api.forexrateapi.com/v1/latest?api_key=[API_KEY]

ForexRateAPI

ForexRateAPI provides a simple to use JSON-based REST API for live and historical foreign exchange (forex) rates in 150+ world currencies. We provide affordable pricing, which makes our API perfect for businesses of any size including startups, online businesses, to large companies in need of live and/or historical financial data.

Our API can be deployed to power financial departments, mobile applications, and back-office systems around the world just to name a few use cases.

List of supported symbols


Definitions

Definition Description
API Key Uniquely assigned key to each API account to authenticate interactions with the API.
Symbol Three-letter currency code of a given currency.
Base Currency The currency to which exchange rates are relative to.
Quote Currency The currency an amount is converted to.

Live Rate Delay

Live exchange rate data is delayed based on your subscription plan.

Subscription Plan Delay
Free 60 minutes
Basic 10 minutes
Professional 60 seconds
Business 30 seconds

API Key

The ForexRateAPI uses API keys to authenticate requests. You can view and manage your API key in the dashboard.

Please ensure to keep your API Key private as each request made with your API Key counts towards your account's plan limit.

To make an successful request, you must pass in your API Key into every request

We provide two ways to pass in your API Key for every request. Method one is to append your API Key to the request url. Method two is to pass in the API Key via the request header.

Method 1:

https://api.forexrateapi.com/v1/latest?api_key=API_KEY

Method 2:

curl https://api.forexrateapi.com/v1/latest \
-H 'X-API-KEY: YOUR_API_KEY' \
-H 'Content-Type: application/json'

API Quota

To determine your current request quota, you can take a look at the response header after a request.

Response Headers

Key Description
X-API-CURRENT Number of requests consumed for the month.
X-API-QUOTA API quota limit for the month based on your account plan.

API Endpoints

We offer 6 customizable endpoints, all which provides you access to different kinds of data. Below you will find a short summary of all available endpoints. Detailed explaination of any of the endpoints below will be provided in API Features.

// "symbols" - get list of all supported currencies
https://api.forexrateapi.com/v1/symbols

// "latest" - get real-time exchange rate data for all available/specific currencies
https://api.forexrateapi.com/v1/latest

// "historical" - get historical rates for a specific day
https://api.forexrateapi.com/v1/YYYY-MM-DD

// "convert" - convert one currency to another based on real-time or historic exchange rate data
https://api.forexrateapi.com/v1/convert?from=USD&to=EUR&amount=100

// "timeframe" - request exchange rates for a specific period of time
https://api.forexrateapi.com/v1/timeframe?start_date=2021-01-01&end_date=2021-05-01

// "change" - request any currency change parameters (margin, percentage)
https://api.forexrateapi.com/v1/change?base=EUR&start_date=2021-01-01&end_date=2021-05-01

API Error Codes

If your query fails, the API will return a 3-digit error-code and a plain text "info" property.

Example Error

{
  "success": false,
  "error": {
      "code": 104,
      "info": "Your monthly usage limit has been reached. Please upgrade your subscription plan."
  }
}

Common API Errors

Error Code Description
404 User requested a non-existent API function
101 User did not supply an API Key
102 User did not supply an access key or supplied an invalid access key
103 The user's account is not active. User will be prompted to get in touch with Customer Support
104 Too Many Requests
105 User has reached or exceeded his subscription plan's monthly API request allowance
201 User entered an invalid Base Currency [ latest, historical, timeframe, change ]
202 User entered an invalid from Currency [ convert ]
203 User entered invalid to currency [ convert ]
204 User entered invalid amount [ convert ]
205 User entered invalid date [ historical, convert, timeframe, change ]
206 Invalid timeframe [ timeframe, change ]
207 Timeframe exceeded 365 days [ timeframe ]
300 The user's query did not return any results [ latest, historical, convert, timeframe, change ]

CORS (Cross-Origin Resource Sharing)

ForexRateAPI supports Access-Control (CORS) headers. This means you will be able to use our API via Cross-Origin HTTPS Requests. Learn more.

Additional Resources

  ForexRateAPI Postman API Project See more

Supported Symbols

This endpoint is used to get the list of the most up-to-date supported symbols. Learn more here.

Example API Request

https://api.forexrateapi.com/v1/symbols
?api_key=[API_KEY]

Request Parameters

Parameter Description
api_key [Required] Your API Key. More details.

Example API Response

{
  "success": true,
  "symbols": {
      "AED": "UAE Dirham",
      "AFN": "Afghan Afghani",
      "ALL": "Albanian Lek",
      ...
  }
}

Response Attributes

Attribute Description
success Returns true or false depending if the API Request succeeded. If false, refer to API Errors.
symbols Key is supported currency, value is description of currency.

Live Rates

This endpoint will return real-time exchange rate data (delayed) depending on your subscription plan.

Example API Request

https://api.forexrateapi.com/v1/latest
?api_key=[API_KEY]
&base=USD
&currencies=EUR,JPY,INR

Request Parameters

Parameter Description
api_key [Required] Your API Key. More details.
base [optional] Specify a base currency. Base Currency will default to USD if this parameter is not defined.
currencies [optional] Specify a comma-separated list of currency codes to limit API responses to specified currencies. If this parameter is not defined, the API will return all supported currencies.

Example API Response

{
  "success": true,
  "base": "USD",
  "timestamp": 1672259320,
  "rates": {
      "EUR": 0.94215187,
      "INR": 82.86,
      "JPY": 134.413
  }
}

In the example API response, that means:
1 USD (Base) = 0.94215187 EUR (Quote)
1 USD (Base) = 82.86 INR (Quote)
1 USD (Base) = 134.413 JPY (Quote)

You can also express the reciprocal:
1/0.94215187 EUR = 1.06 USD (Base) <=> €1 = $1.06
1/82.86 INR = 0.012 USD (Base) <=> ₹1 = $0.012
1/134.413 JPY = 0.007 USD (Base) <=> ¥1 = $0.007

Response Attributes

Attribute Description
success Returns true or false depending if the API Request succeeded. If false, refer to API Errors.
base Returns base currency used for the request.
timestamp Returns the UNIX timestamp the given exchange rates were collected.
rates Returns exchange rate data for the currencies requested.

Historical Rates

This endpoint will return historical exchange rate data. The previous day's historical rates become available each day at 00:05 AM GMT. Use format YYYY-MM-DD or yesterday for the base url.

[Year-Month-Day]

Example API Request

https://api.forexrateapi.com/v1/2021-03-24
?api_key=[API_KEY]
&base=USD
&currencies=EUR,JPY,INR
https://api.forexrateapi.com/v1/yesterday
?api_key=[API_KEY]
&base=USD
&currencies=EUR,JPY,INR

Request Parameters

Parameter Description
api_key [Required] Your API Key. More details.
base [optional] Specify a base currency. Base Currency will default to USD if this parameter is not defined.
currencies [optional] Specify a comma-separated list of currency codes to limit API responses to specified currencies. If this parameter is not defined, the API will return all supported currencies.

Example API Response

{
  "success": true,
  "base": "USD",
  "timestamp": 1616543999,
  "rates": {
      "EUR": 0.84654595,
      "INR": 72.62723433,
      "JPY": 108.78333233
  }
}

In the example API response, that means:
1 USD (Base) = 0.84654595 EUR (Quote)
1 USD (Base) = 72.62723433 INR (Quote)
1 USD (Base) = 108.78333233 JPY (Quote)

You can also express the reciprocal:
1/0.84654595 EUR = 1.18 USD (Base) <=> €1 = $1.18
1/72.62723433 INR = 0.0137 USD (Base) <=> ₹1 = $0.0137
1/108.78333233 JPY = 0.009 USD (Base) <=> ¥1 = $0.009

Response Attributes

Attribute Description
success Returns true or false depending if the API Request succeeded. If false, refer to API Errors.
base Returns base currency used for the request.
timestamp Returns the UNIX timestamp the given exchange rates were collected.
rates Returns exchange rate data for the currencies requested.

Currency Convert

This endpoint is used to convert any amount from one currency to another.

Example API Request

https://api.forexrateapi.com/v1/convert
?api_key=[API_KEY]
&from=USD
&to=EUR
&amount=100
&date=2021-04-23

Request Parameters

Parameter Description
api_key [Required] Your API Key. More details.
from [optional] Specify currency you would like to convert from. Base Currency will default to USD if this parameter is not defined.
to [Required] Specify currency you would like to convert to.
amount [Required] The amount to convert.
date [optional] Specify date to use historical midpoint value for conversion. Otherwise, it will use live exchange rate date with delay specified based on your subscription plan.

Example API Response

{
  "success": true,
  "query": {
      "from": "USD",
      "to": "EUR",
      "amount": 100
  },
  "info": {
      "quote": 0.82657397,
      "timestamp": 1619135999
  },
  "result": 82.65739676
}

Response Attributes

Attribute Description
success Returns true or false depending if the API Request succeeded. If false, refer to API Errors.
query -> from Returns currency converted from used for the request.
query -> to Returns currency converted to used for the request.
query -> amount Returns amount to convert.
info -> quote Returns the exchange rate used for the conversion.
info -> timestamp Returns the UNIX timestamp the given exchange rates were collected.
result Returns conversion result.

Timeframe Query

This endpoint is used to get historical rates for a specified time period (max range: 365 days).

Example API Request

https://api.forexrateapi.com/v1/timeframe
?api_key=[API_KEY]
&start_date=2021-04-22
&end_date=2021-04-23
&base=USD
&currencies=EUR,JPY,INR

Request Parameters

Parameter Description
api_key [Required] Your API Key. More details.
start_date [Required] Specify the start date of your timeframe.
end_date [Required] Specify the end date of your timeframe.
base [optional] Specify a base currency. Base Currency will default to USD if this parameter is not defined.
currencies [optional] Specify a comma-separated list of currency codes to limit API responses to specified currencies. If this parameter is not defined, the API will return all supported currencies.

Example API Response

{
  "success": true,
  "base": "USD",
  "start_date": "2021-04-22",
  "end_date": "2021-04-23",
  "rates": {
      "2021-04-22": {
        "EUR": 0.83233837,
        "INR": 75.09793267,
        "JPY": 107.97997033
      },
      "2021-04-23": {
        "EUR": 0.82657397,
        "INR": 75.00244667,
        "JPY": 107.88867591
      },
  }

Response Attributes

Attribute Description
success Returns true or false depending if the API Request succeeded. If false, refer to API Errors.
base Returns base currency used for the request.
start_date Returns start date of your timeframe for the request.
end_date Returns end date of your timeframe for the request.
rates Returns exchange rate data for the currencies requested.

Change Query

This endpoint is used to request the change (percentage) of one of more currencies, relative to a base currency with a specific time-frame (optional).

The API will return change values of the specified start_date and end_date.

Example API Request

https://api.forexrateapi.com/v1/change
?api_key=[API_KEY]
&start_date=2021-04-22
&end_date=2021-04-23
&base=USD
&currencies=EUR

Request Parameters

Parameter Description
api_key [Required] Your API Key. More details.
start_date [Required] Specify the start date of your timeframe.
end_date [Required] Specify the end date of your timeframe.
base [optional] Specify a base currency. Base Currency will default to USD if this parameter is not defined.
currencies [optional] Specify a comma-separated list of currency codes to limit API responses to specified currencies. If this parameter is not defined, the API will return all supported currencies.
date_type [optional] Specify "yesterday", "week", "month", or "year" to retrieve the rate change for the corresponding time period. If provided, this parameter overrides "start_date" and "end_date".

Example API Response

{
  "success": true,
  "base": "USD",
  "start_date": "2021-04-20",
  "end_date": "2021-04-21",
  "rates": {
      "EUR": {
        "start_rate": 0.83233837,
        "end_rate": 0.82657397,
        "change": -0.0057644,
        "change_pct": -0.6926
      }
  }

Response Attributes

Attribute Description
success Returns true or false depending if the API Request succeeded. If false, refer to API Errors.
base Returns base currency used for the request.
start_date Returns start date of your timeframe for the request.
end_date Returns end date of your timeframe for the request.
rates -> start_rate Returns exchange rate for the start date.
rates -> end_rate Returns exchange rate for the end date.
rates -> change Returns change (decimal number) of the given currency rate between the start and end date.
rates -> change_pct Returns percent change of the given currency rate between your start and end date. Formula used is ((end_rate - start_rate) / start_rate) * 100