Skip to main content

tap-unirate

PyPI Meltano License

A Singer tap for UniRateAPI, built on the Meltano Singer SDK. Pull live currency exchange rates, the supported-currency list, and country VAT rates into any Singer target or Meltano ELT pipeline.

Streams

Stream Endpoint Primary key Description
currencies GET /api/currencies code One record per supported ISO 4217 currency code.
exchange_rates GET /api/rates?from=<base> base_currency, currency Latest rate for every target currency against the configured base.
vat_rates GET /api/vat/rates country_code Standard VAT rate per country (ISO 3166-1 alpha-2).

Historical rates and time series are Pro-gated on the UniRate API and are intentionally not exposed by this tap (they return HTTP 403 on the free tier).

Install

pip install tap-unirate

Requires Python 3.10+ (matching the Meltano Singer SDK).

Or add it to a Meltano project:

meltano add extractor tap-unirate

Configuration

Setting Required Default Description
api_key yes — UniRate API key. Get a free one at https://unirateapi.com.
base_currency no USD Base currency (ISO 4217) for the exchange_rates stream.
base_url no https://api.unirateapi.com Override the API base URL (mainly for testing).

Full config reference:

tap-unirate --about --format=markdown

Usage

Standalone

# Discover the catalog
tap-unirate --config config.json --discover > catalog.json

# Sync records (Singer messages on stdout)
tap-unirate --config config.json --catalog catalog.json | target-jsonl

Example config.json:

{
  "api_key": "YOUR_UNIRATE_API_KEY",
  "base_currency": "USD"
}

Meltano

meltano config tap-unirate set api_key $UNIRATE_API_KEY
meltano config tap-unirate set base_currency EUR
meltano run tap-unirate target-jsonl

See examples/ for a sample config and the full discovery flow.

Development

pip install -e ".[test]"
pytest
ruff check tap_unirate tests

All tests are fully mocked with requests-mock — no live API calls, no key required. The suite combines the Singer SDK's standard tap tests (get_tap_test_class) with per-stream record assertions.

Status

v0.1.0 — initial release. 3 streams. Built on singer-sdk >= 0.40.

Other UniRate clients

UniRate ships official client libraries and framework integrations across the ecosystem, all maintained under the UniRate-API org.

Get a free API key at unirateapi.com.

License

MIT.

Links

Metadata

Release files for tap-unirate 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tap-unirate 0.1.0
File Size Uploaded
tap_unirate-0.1.0.tar.gz 10.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tap-unirate 0.1.0
File Interpreter ABI Platform
tap_unirate-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.4 kB

Release files / tap_unirate-0.1.0.tar.gz

Download URL tap_unirate-0.1.0.tar.gz
Size 10.2 kB
Tags Source
SHA-256 checksum
How to use checksums
dd243f24f0898022e0796a3518f62dfe88e45ed0f0cbbcbabca38b0659ef8c61
BLAKE2b-256 checksum
How to use checksums
49bd50e1215603ba6a09668aea9a0f1a71505dec2deeeede5d5b3cbb9fe78be6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release files / tap_unirate-0.1.0-py3-none-any.whl

Download URL tap_unirate-0.1.0-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
91547b43dc6cedbf76fb2b3ac61fc4937d21927b404205973cf56c5122a2f163
BLAKE2b-256 checksum
How to use checksums
7a98d540dbe75121fb7c4ec9aec2dc4b8d231ee410f114b5529fa21825badb4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page