Skip to main content

Python client for Furnilytics furniture market datasets.

Project description

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:

  • /datasets catalog discovery
  • /metadata inspection
  • /data/{id} retrieval
  • Public and API-key protected datasets

Ideal for research automation, dashboards, and quantitative analysis pipelines.

PyPI Python


Links


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.


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

furnilytics-0.2.9.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

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

furnilytics-0.2.9-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file furnilytics-0.2.9.tar.gz.

File metadata

  • Download URL: furnilytics-0.2.9.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for furnilytics-0.2.9.tar.gz
Algorithm Hash digest
SHA256 73fa2c289e92fbcfb8f42755423988a88cb3b0e29a74729bb3e06d0c8af6c496
MD5 7f65c85d6265cf9b0357de3802f8b1c3
BLAKE2b-256 d5796432c59157ffbf57680344756b6e8e60e77731c365be9a417a66f81393df

See more details on using hashes here.

Provenance

The following attestation bundles were made for furnilytics-0.2.9.tar.gz:

Publisher: publish.yml on Furnilytics/Furnilytics_lib

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

File details

Details for the file furnilytics-0.2.9-py3-none-any.whl.

File metadata

  • Download URL: furnilytics-0.2.9-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for furnilytics-0.2.9-py3-none-any.whl
Algorithm Hash digest
SHA256 8b8db5d42f109f11ecafaab3691612c22c082bc1d8b31e84315053283c37859d
MD5 d3290d67254a79bc8db1bf6dec371a11
BLAKE2b-256 c952a9974152f9efd969b97739cfa367ecc60c1f98980efb0386d8c1281a95ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for furnilytics-0.2.9-py3-none-any.whl:

Publisher: publish.yml on Furnilytics/Furnilytics_lib

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