Free plan · no card required

Query your data, where it lives.

Opteryx queries files in S3 and GCS, Iceberg tables and PostgreSQL databases in place — no loading, no cluster to run. Your data lake is already there. Start querying it.

100 queries a day, free Metered per query and per GB Apache-2.0 engine
exoplanets · discoveries by year 10 rows
discoveries 2021 peak
2017–2026
2,884
query.ok · 6,324 rows scanned
Why Opteryx

A warehouse’s guarantees, without the warehouse.

Three commitments you can check for yourself on the free plan.

Nothing to provision

No cluster to size and no idle spend between queries. Sign in with Google or GitHub and run your first query in the browser.

Governance built in

Grant access per identity with glob patterns over schema.table, scoped to a workspace. Issue and revoke tokens for machine access.

No surprise bills

The free allowance is a quota, not a credit. Without a billing account, usage past the limit is blocked, never billed.

A SQL workspace in your browser.

Editor, results, charts and history in one place. Nothing to install.

  • Completion and signature help for Opteryx SQL
  • Results grid with CSV and JSON export
  • Column, bar and line charts, saved as PNG
  • A history of every query you’ve run
  • An assistant on your own AI provider key
  • Drag in CSV, Parquet, JSON or NDJSON to make a dataset

This query is real. Sign in, paste it, and it runs on the free plan.

discoveries_by_year.sql
-- Exoplanet discoveries per year
SELECT disc_year,
       COUNT(*) AS planets
  FROM public.astronomy.exoplanets
 WHERE disc_year >= 2017
 GROUP BY disc_year
 ORDER BY disc_year;

-- 10 rows · 6,324 scanned
Discoveries · top years
2,884 across 2017–2026
2021
564
2022
367
2023
323
public.astronomy.exoplanets
Connect

Every way in and out.

Query a bucket, a catalog or a database in place, or upload files. Everything Studio does is also an API you can call.

Ib
Apache Iceberg
Point a workspace at your REST catalog. Tables stay in your storage.
Source
Pg
PostgreSQL
Query your own server. Filters and limits run on it.
Source · experimental
S3
Amazon S3
READ_PARQUET('s3://…') — no import, no setup.
Source
GS
Google Cloud Storage
Same for gs://. Private buckets read with a stored secret.
Source
API
Query API
POST /api/v1/jobs — submit SQL, poll, collect results.
Protocol
OD
OData v4
Read-only feed with typed $metadata.
Protocol
Py
Python
pip install opteryx-core — the same engine, locally.
Client
Tk
Access tokens
Issue and revoke credentials for machine access.
Auth
Pq
Parquet
Upload it, or read it where it already sits.
Format
Cs
CSV
Schema inferred on upload, confirmed before commit.
Format
Js
JSON & NDJSON
Line-delimited or whole-file.
Format
Ex
CSV & JSON out
Export any result set straight from the grid.
Export
Pricing

Pay for queries and gigabytes. That’s it.

No seats, no reserved capacity, no minimum. Add a billing account when you outgrow the free allowance.

Free
£0

Resets daily. Unused allowance doesn’t carry over.

  • 100 queries per day
  • 167 MB queried data per day
  • 5 GB storage at any one time

Shared across all your workspaces. Without a billing account, usage past it is blocked, never charged.

Start free
Usage
Metered

Beyond the free allowance, per unit, in GBP excluding VAT.

  • Queries £0.10 / 1,000
  • Queried data £0.004 / GB
  • Storage £0.00003 / GB / hour

About £4 per terabyte scanned and £0.02 per GB stored per month, with every charge attributed to the query that made it.

Read the cost model
local.py
# pip install opteryx-core
import opteryx

# the same engine, over a file on your disk
result = opteryx.query(
    "SELECT * FROM 'space_missions.parquet' LIMIT 5;"
)
result.head()

The engine is open source.

Run the same engine yourself over local files, dataframes or object storage, with no cluster and no schema to declare. It’s Apache-2.0 and stays that way.

The hosted service adds storage, sign-in, access policies, metering and Studio. The SQL is the same in both.

Run your first query in about a minute.

Sign in with Google or GitHub, then point at your data or start with the sample datasets.