+
VectorFin
Fully self-serve

VectorFin in Python

Query VectorFin embeddings and signals from a Python notebook via the REST API. Works on every plan, including Free, with no SDK and no infrastructure.

2 min
Setup time
768
Embedding dims
~500
S&P 500 (beta)
Weekly
Updates

Prerequisites

📋VectorFin Free plan
🔑API key from app.vectorfinancials.com
☁️Python account

Connection Guide

1

Install requests and set your API key

No SDK required. The REST API uses a single header (X-API-Key). Free-tier keys are issued instantly when you sign up at app.vectorfinancials.com. Everything below runs in a plain Jupyter / Colab notebook cell.

bash
pip install requests pandas numpy

# Set the key from your dashboard. Free tier covers the top 100 tickers
# with a 90-day signal lookback and 250 calls/month.
import os
VF_API_KEY = os.environ["VECTORFIN_API_KEY"]
2

List available tickers

Fetch the tickers your plan can access. In beta the universe is the S&P 500 (~500 tickers); Free returns the top 100. The 5,000+ ticker universe is the Starter (and above) plan limit at GA.

python
import requests

resp = requests.get(
    "https://api.vectorfinancials.com/v1/tickers",
    headers={"X-API-Key": VF_API_KEY},
    timeout=10,
)
resp.raise_for_status()
data = resp.json()
print(f"{data['total']} tickers available")
print(data["tickers"][:10])
3

Fetch transcript embeddings

Pull 768-dim embeddings (Google gemini-embedding-2-preview) for a ticker and fiscal period. fiscal_period is required (it scopes the partition scan); limit caps at 100 per call.

python
import pandas as pd, numpy as np

resp = requests.get(
    "https://api.vectorfinancials.com/v1/embeddings/AAPL",
    headers={"X-API-Key": VF_API_KEY},
    params={"fiscal_period": "2024-Q3", "limit": 50},
    timeout=10,
)
resp.raise_for_status()
records = resp.json()  # list[EmbeddingRecord]

df = pd.DataFrame(records)
E = np.stack(df["embedding"].values)  # (N, 768)
print(f"Loaded {E.shape[0]} chunks for AAPL 2024-Q3")
4

Fetch quant signals

Pull the signal feed for a ticker. Free tier is capped at a 90-day lookback and a 30-row cap; paid tiers go back to the start of data history.

python
resp = requests.get(
    "https://api.vectorfinancials.com/v1/signals/NVDA",
    headers={"X-API-Key": VF_API_KEY},
    params={"date_from": "2024-01-01", "limit": 365},
    timeout=10,
)
resp.raise_for_status()
signals = pd.DataFrame(resp.json())
signals["date"] = pd.to_datetime(signals["date"])
signals = signals.set_index("date").sort_index()
print(signals[["score", "components"]].tail())
5

Local cosine search over fetched embeddings

There is no server-side vector search on the REST API, so fetch the chunks for the tickers you care about and run similarity locally. For corpus-wide search, upgrade to Pro and query the shared Iceberg tables directly (see the BigQuery and Snowflake guides, or the shared bucket).

python
# Fetch chunks for a basket and run cosine locally
chunks = []
for ticker in ["AAPL", "MSFT", "NVDA"]:
    r = requests.get(
        f"https://api.vectorfinancials.com/v1/embeddings/{ticker}",
        headers={"X-API-Key": VF_API_KEY},
        params={"fiscal_period": "2024-Q3", "limit": 100},
    )
    r.raise_for_status()
    chunks.extend(r.json())

E = np.stack([c["embedding"] for c in chunks])
query = np.random.randn(768)  # replace with your real query embedding
query /= np.linalg.norm(query)
sims = E @ query / np.linalg.norm(E, axis=1)
top5 = np.argsort(sims)[::-1][:5]
for i in top5:
    c = chunks[i]
    print(f"{c['ticker']} {c['fiscal_period']} chunk {c['chunk_idx']} sim={sims[i]:.3f}")

Available Tables

VectorFin data tables: bitemporal (effective_ts + knowledge_ts), append-only, weekly updates.

GET /v1/tickersList tickers available on your plan
sql
requests.get("https://api.vectorfinancials.com/v1/tickers", headers={"X-API-Key": key})
GET /v1/embeddings/{ticker}Transcript chunk embeddings (768-dim) for a ticker + fiscal_period (required)
sql
requests.get("https://api.vectorfinancials.com/v1/embeddings/AAPL", params={"fiscal_period": "2024-Q3"}, headers={"X-API-Key": key})
GET /v1/signals/{ticker}Quant signals for a ticker (date_from, date_to, limit)
sql
requests.get("https://api.vectorfinancials.com/v1/signals/NVDA", params={"date_from": "2024-01-01", "limit": 365}, headers={"X-API-Key": key})

Start querying in 2 minutes

Sign up for VectorFin and get immediate API access.