Skip to main content

Singer tap for the UniRate API — currency exchange rates, currencies, and VAT rates for Meltano / ELT pipelines.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tap_unirate-0.1.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tap_unirate-0.1.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file tap_unirate-0.1.0.tar.gz.

File metadata

  • Download URL: tap_unirate-0.1.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for tap_unirate-0.1.0.tar.gz
Algorithm Hash digest
SHA256 dd243f24f0898022e0796a3518f62dfe88e45ed0f0cbbcbabca38b0659ef8c61
MD5 35f7cb1b5e26e521af3e1f95678c08ab
BLAKE2b-256 49bd50e1215603ba6a09668aea9a0f1a71505dec2deeeede5d5b3cbb9fe78be6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tap_unirate-0.1.0.tar.gz:

Publisher: release.yml on UniRate-API/tap-unirate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tap_unirate-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tap_unirate-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for tap_unirate-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91547b43dc6cedbf76fb2b3ac61fc4937d21927b404205973cf56c5122a2f163
MD5 a4e15dca1cd42819725d212ed7ef59c7
BLAKE2b-256 7a98d540dbe75121fb7c4ec9aec2dc4b8d231ee410f114b5529fa21825badb4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tap_unirate-0.1.0-py3-none-any.whl:

Publisher: release.yml on UniRate-API/tap-unirate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page