Home Documentation Pricing API Status Blog About FAQ Support

No Official SDKs on Open Exchange Rates: AllRatesToday's JavaScript, Python, and PHP Libraries

Reviewed by Madhushan, Fintech Developer — April 2026

Open Exchange Rates' own docs spell it out: "We don't actively support or maintain any of these community libraries (except where stated)." The recommended integration path is direct HTTP — "access latest.json via AJAX, CURL, Scrapy, node-httpagent, or your method of choice."

For a simple read-only endpoint, that's workable. But when you hit production concerns — retries, typed responses, caching, error normalization, rate-limit handling — you're reimplementing the same client wrapper every team has already written ten times over.

AllRatesToday ships first-party SDKs for JavaScript/TypeScript, Python, and PHP, plus MCP server and DeepSeek integration for AI coding tools. This article walks through why that matters and what the DX difference looks like in practice.

What "no official SDK" means

Open Exchange Rates' API Libraries & Extensions page lists community libraries for Ruby, Python, PHP, Node.js, .NET, Java, and others. Some are well-maintained; others were last updated in 2017. All are third-party.

What you give up without an official SDK:

AllRatesToday's official SDKs

JavaScript / TypeScript

npm install @allratestoday/sdk
import AllRatesToday from '@allratestoday/sdk';

const client = new AllRatesToday(process.env.ALLRATES_API_KEY!);

// Single rate (typed response)
const { rate } = await client.getRate('USD', 'EUR');

// Convert with typed result
const { result } = await client.convert('USD', 'EUR', 1000);

// Historical — returns a typed time series
const history = await client.getHistoricalRates('USD', 'EUR', '30d');
history.rates.forEach(p => console.log(p.time, p.rate));

Full TypeScript types. Throws a typed AllRatesTodayError on 4xx/5xx. Handles retry/backoff by default.

Python

pip install allratestoday
from allratestoday import AllRatesToday

client = AllRatesToday(api_key="YOUR_KEY")

rate = client.get_rate("USD", "EUR")
result = client.convert("USD", "EUR", 1000)
history = client.get_historical_rates("USD", "EUR", "30d")

Ships with type hints, async variant (AsyncAllRatesToday), and context-manager support.

PHP

composer require allratestoday/sdk
use AllRatesToday\AllRatesToday;

$client = new AllRatesToday('YOUR_KEY');
$rate = $client->getRate('USD', 'EUR');
$result = $client->convert('USD', 'EUR', 1000);

PSR-18 compatible HTTP client, PSR-3 logger support.

The same task in raw HTTP (what you'd write against Open Exchange Rates)

Here's a realistic production client you'd need to write against Open Exchange Rates to get the same features the AllRatesToday SDK gives you for free:

async function getRate(from, to, attempt = 0) {
  const url = `https://openexchangerates.org/api/latest.json?app_id=${APP_ID}&base=${from}&symbols=${to}`;

  try {
    const res = await fetch(url);
    if (res.status === 429) {
      // rate limited — backoff
      if (attempt < 3) {
        await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        return getRate(from, to, attempt + 1);
      }
      throw new Error('Rate limited after retries');
    }
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    const data = await res.json();
    if (data.error) throw new Error(data.description);
    return data.rates[to];
  } catch (err) {
    // re-throw normalized
    throw err;
  }
}

About 20 lines of hand-rolled glue per team. The AllRatesToday SDK gives you all of this behind a three-word method call.

Note: the base={from} parameter in the URL above won't work on the Open Exchange Rates free plan — base is USD-only. You'd need either the Developer tier or to switch to cross-rate math. We cover that pain point separately.

MCP and DeepSeek: AI-coding-tool integrations

AllRatesToday also ships integrations Open Exchange Rates doesn't offer at all:

Neither of these makes sense without a well-defined SDK layer, and that's the practical payoff of shipping an official client: you can build higher-level integrations on top of it without every downstream user rebuilding the wrapper.

When community libraries are fine

If you're on a language AllRatesToday doesn't yet officially support (Ruby, Go, Rust, .NET, Java), the community libraries for Open Exchange Rates and AllRatesToday are both usable — just audit the maintenance status before shipping.

When you want an official SDK

Skip the hand-rolled HTTP client

Install the SDK, start calling client.getRate(), done. No credit card required.

Get your free API key