Skip to content

Repository files navigation

CurrencyApi Python wrapper

PyPI versionCoverage Status

Note: API v1 is deprecated and will be retired on 31st July 2026, at which point all v1 traffic will be redirected to v2. This SDK (v2.0.0+) targets API v2. If you are on an older version of this SDK, please upgrade.

CurrencyApi.net provides live currency rates via a REST API. A live currency feed for over 166 currencies, including physical (USD, GBP, EUR + more) and cryptos (Bitcoin, Litecoin, Ethereum + more). A JSON and XML currency api updated every 60 seconds.

Features:

  • Live exchange rates (updated every 60 seconds).
  • 166 currencies world currencies.
  • Popular cryptocurrencies included; Bitcoin, Litecoin etc.
  • Convert currencies on the fly with the convert endpoint.
  • Historical currency rates back to year 2000.
  • OHLC (Open, High, Low, Close) data for technical analysis (Tier 3+).
  • Easy to follow documentation

Signup for a free or paid account here.

This package is a:

Python wrapper for CurrencyApi.net endpoints (API v2).

Developer Guide

For an easy to following developer guide, check out our Python Developer Guide.

Alternatively keep reading below.

Prerequisites

  • Minimum Python version 3.10
  • Last tested and working on Python 3.14
  • Free or Paid account with CurrencyApi.net

Test Coverage

  • 100% coverage

Installation

View our Python SDK guide

pip install currencyapinet

Usage

fromcurrencyapinetimportCurrencycurrency=Currency('YOUR_API_KEY')

Rates

Returns live currency rates for all supported currencies. Base currency defaults to USD.

result=currency.rates().get()
# With optional base currencyresult=currency.rates().base('EUR').get()
# XML outputresult=currency.rates().output('XML').get()

Convert

Converts an amount from one currency to another.

result=currency.convert().from_currency('USD').to_currency('EUR').amount(100).get()

History

Returns historical currency rates for a specific date.

result=currency.history().date('2023-12-25').get()
# With optional base currencyresult=currency.history().base('GBP').date('2023-12-25').get()

Timeframe

Returns historical currency rates for a date range (max 365 days).

result=currency.timeframe().start_date('2023-12-01').end_date('2023-12-31').get()
# With optional base currencyresult=currency.timeframe().base('GBP').start_date('2023-12-01').end_date('2023-12-31').get()

Currencies

Returns a list of all supported currencies.

result=currency.currencies().get()

OHLC

Returns OHLC (Open, High, Low, Close) data for a currency pair on a specific date. Requires a Tier 3 subscription.

Parameters:

ParameterRequiredDescription
quoteYesQuote currency code (e.g. EUR, GBP, BTC)
dateYesDate in YYYY-MM-DD format (must be in the past)
baseNoBase currency code (defaults to USD)
intervalNoTime interval: 5m, 15m, 30m, 1h, 4h, 12h, 1d (defaults to 1d)
# Basic request (1-day interval)result=currency.ohlc().quote('EUR').date('2023-12-25').get()
# With custom intervalresult=currency.ohlc().quote('GBP').date('2023-12-25').interval('1h').get()
# With custom base currency and intervalresult=currency.ohlc().quote('JPY').date('2023-12-25').base('EUR').interval('4h').get()
# XML outputresult=currency.ohlc().quote('EUR').date('2023-12-25').output('XML').get()

Example response:

{
"valid": true,
"base": "USD",
"quote": "EUR",
"date": "2023-12-25",
"interval": "1d",
"ohlc": [
{
"start": "2023-12-25T00:00:00Z",
"open": 0.92000000000000,
"high": 0.92500000000000,
"low": 0.91800000000000,
"close": 0.92200000000000
}
]
}

Releases

Packages

Used by

Contributors

Languages