Furnilytics Python Library
A lightweight, production-ready Python wrapper for the Furnilytics REST API.
The client abstracts HTTP handling, authentication, rate-limiting, and error management, returning datasets as Pandas DataFrames for immediate analytical use.
Supports:
/datasetscatalog discovery/metadatainspection/data/{id}retrieval- Public and API-key protected datasets
Ideal for research automation, dashboards, and quantitative analysis pipelines.
Links
- API docs: https://www.furnilytics.com/platform/api/#api-python
- Data catalogue: https://www.furnilytics.com/platform/data-catalogue/
- API discovery: https://api.furnilytics.com/
- OpenAPI schema: https://api.furnilytics.com/openapi.json
- GitHub source: https://github.com/Furnilytics/Furnilytics_lib
- PyPI package: https://pypi.org/project/furnilytics/
Installation
pip install furnilytics
Authentication
Public datasets can be accessed without an API key.
Pro datasets require an API key via the X-API-Key header.
Option 1 — Environment Variable (recommended)
export FURNILYTICS_API_KEY="your_api_key"
On Windows PowerShell:
$env:FURNILYTICS_API_KEY="your_api_key"
Option 2 — Pass directly to Client
from furnilytics import Client
cli = Client(api_key="your_api_key")
Quick Start
from furnilytics import Client
cli = Client()
# API health
print(cli.health())
# List available datasets
datasets = cli.datasets()
print(datasets.head())
# List metadata
meta = cli.metadata()
print(meta.head())
# Get metadata for one dataset
info = cli.metadata_one("other/materials/eu_pb_price")
print(info["meta"])
# Fetch dataset rows
df = cli.data("other/materials/eu_pb_price", limit=10, geo=["PL", "DE"])
print(df.head())
Core Endpoints Covered
The client wraps the following API endpoints:
| Method | Endpoint | Description |
|---|---|---|
health() |
/health |
API status check |
datasets() |
/datasets |
Dataset catalog |
metadata() |
/metadata |
Full metadata list |
metadata_one(id) |
/metadata/{id} |
Metadata for one dataset |
data(id) |
/data/{id} |
Data rows only |
Dataset IDs use the format:
topic/subtopic/table_id
Example:
macro_economics/prices/eu_hicp_energy
Filtering Data
The data() method supports optional filters:
df = cli.data(
"other/materials/eu_pb_price",
frm="2020-01-01",
to="2023-12-31",
limit=1000
)
Parameters:
frm— start date (YYYY-MM-DD)to— end date (YYYY-MM-DD)limit— max rows (server limit applies)<column>=value— filter by any column (e.g.geo=PL)
Public vs Pro Datasets
Datasets include a visibility field:
"public"— accessible without API key"paid"/"pro"— requires API key
If a Pro dataset is accessed without a key, the client raises:
AuthError
Example:
from furnilytics import Client, AuthError
cli = Client(api_key=None)
try:
cli.data("some/pro/dataset")
except AuthError as e:
print("Access denied:", e)
Error Handling
The client raises structured exceptions:
| Exception | Meaning |
|---|---|
AuthError |
Missing or invalid API key |
NotFoundError |
Dataset not found |
RateLimitError |
Too many requests |
ClientError |
Other 4xx or 5xx errors |
Example:
try:
df = cli.data("unknown/id")
except NotFoundError:
print("Dataset does not exist.")
Debugging
You can inspect response metadata:
cli.data("macro_economics/prices/eu_hicp_energy", limit=5)
print(cli.last_response_meta)
Includes:
- HTTP status
- ETag
- Cache headers
- Rate-limit headers (if present)
Development
Clone the repository:
git clone https://github.com/Furnilytics/Furnilytics_lib.git
cd Furnilytics_lib
pip install -e .
Build locally:
python -m build
Publish to PyPI via tagged release:
git tag v0.2.x
git push origin v0.2.x
Project Structure
furnilytics/
├── client.py
├── __main__.py
└── __init__.py
Requirements
- Python 3.9+
- requests
- pandas
About Furnilytics
Furnilytics is a data-driven market intelligence initiative focused on the global furniture industry, integrating macroeconomic, trade, retail, and digital demand data into structured datasets and analytical indicators.
Website: https://www.furnilytics.com
API documentation: https://www.furnilytics.com/platform/api/#api-python
Dataset catalogue: https://www.furnilytics.com/platform/data-catalogue/
License & scope
MIT License
This license applies only to the Python client library code.
Access to and usage of the Furnilytics API and its datasets are governed by separate Terms of Service.
Metadata
Release files for furnilytics 0.2.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| furnilytics-0.2.9.tar.gz | 9.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| furnilytics-0.2.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.8 kB
Release files / furnilytics-0.2.9.tar.gz
| Download URL | furnilytics-0.2.9.tar.gz |
|---|---|
| Size | 9.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
73fa2c289e92fbcfb8f42755423988a88cb3b0e29a74729bb3e06d0c8af6c496
|
|
BLAKE2b-256 checksum How to use checksums |
d5796432c59157ffbf57680344756b6e8e60e77731c365be9a417a66f81393df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 May 30, 2026.
Transparency logRelease files / furnilytics-0.2.9-py3-none-any.whl
| Download URL | furnilytics-0.2.9-py3-none-any.whl |
|---|---|
| Size | 8.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8b8db5d42f109f11ecafaab3691612c22c082bc1d8b31e84315053283c37859d
|
|
BLAKE2b-256 checksum How to use checksums |
c952a9974152f9efd969b97739cfa367ecc60c1f98980efb0386d8c1281a95ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 May 30, 2026.
Transparency log