Skip to main content
FR-Snowflake · Marketplace · v1

Filings in your Snowflake,
zero ETL.

16M+ regulatory filings delivered via Snowflake Marketplace. Appears as a read-only database in your account — no pipelines to build, no credentials to manage, no data to move.

DeliverySnowflake Marketplace
RefreshHourly · Snowpipe auto-ingest
CoverageG20 + Europe · 66 sources
AuthSnowflake share · per-client views
FormatsSnowflake tables · SQL-native
AccessEnterprise · per agreement
01 · TL;DR

What Snowflake delivery is, in three lines.

Same data as the API and S3 bucket. Delivered as a live Snowflake database via Marketplace — no pipelines, no egress, no sync jobs to maintain.

What you get

A read-only database in your Snowflake.

Tables for FILINGS, COMPANIES, SOURCES, FILING_TYPES, FILING_CATEGORIES, and LANGUAGES. Accept the listing, and it appears in your account within minutes. Query immediately.

Who it's for

Teams that already run on Snowflake.

Quant analysts joining filings to internal models. Data teams building dashboards. Risk desks scanning disclosure patterns. If your analytics stack is Snowflake-native, this is the fastest path to our data.

How it's billed

Annual subscription. You pay your compute.

The data subscription is flat. Snowflake charges your account for query compute (your warehouse, your credits). No data egress fees — Marketplace uses Snowflake's internal replication.

02 · Choosing a channel

API, S3, or Snowflake — pick by workflow.

All three surfaces serve the same data with the same identifiers. The difference is access pattern and infrastructure fit. Most teams use one primary channel and occasionally cross-reference via the API.

Use case
REST API
S3 bulk
Snowflake
SQL-native analytics
Possible via JSON loader. Extra work.
Parquet + external tables. Needs setup.
BestAlready a table. Just SELECT.
Join to internal models
Load API results into your warehouse first.
Parquet external table join. Works.
BestSame warehouse, same SQL. Zero-copy join.
Event-driven pipeline
BestWebhooks fire in seconds.
Not event-driven on the consumer side.
Streams detect new rows. ~1-2 h lag.
LLM training on filings
Not designed for bulk reads.
BestStream Markdown from S3 directly.
Possible but not optimized for blob export.
Zero infrastructure setup
Need API key + code to call endpoints.
Need IAM roles + bucket policy + tooling.
BestAccept the listing. Done.
Cross-sectional KPI scan
Pages add up at full-corpus scale.
BestDuckDB against Parquet. Seconds.
BestSELECT with standard SQL. Seconds.
03 · Quickstart

From zero to your first query.

Three steps. No IAM roles, no bucket policies, no ETL code. You need a Snowflake account on any cloud or region — Marketplace handles cross-cloud replication automatically.

1

Request access

Contact us or email [email protected] with your Snowflake account locator. We'll create a private Marketplace listing scoped to your contract (geography, tier) and invite your account.

2

Accept the listing

A Snowflake admin on your side accepts the private listing. A read-only database called FINANCIALREPORTS appears in your account. No data moves — Snowflake's auto-fulfillment handles cross-cloud replication.

3

Query

Point any warehouse at the shared database. The example on the right queries the latest German annual reports. New filings appear automatically — no cron, no sync, no maintenance.

Snowflake · SQL
-- Latest annual reports from German companies
SELECT
  f.filing_id,
  f.company_name,
  f.title,
  f.release_datetime,
  f.fiscal_year,
  f.processing_status
FROM FINANCIALREPORTS.FILINGS f
WHERE f.country_code = 'DE'
  AND f.filing_type_code = '10-K'
  AND f.release_datetime >= DATEADD(month, -12, CURRENT_TIMESTAMP())
ORDER BY f.release_datetime DESC
LIMIT 25;

-- Join to your internal portfolio table
SELECT
  p.portfolio_name,
  f.company_name,
  f.title,
  f.release_datetime
FROM FINANCIALREPORTS.FILINGS f
JOIN my_db.public.portfolio_holdings p
  ON f.company_id = p.fr_company_id
WHERE f.release_datetime >= DATEADD(day, -7, CURRENT_TIMESTAMP())
ORDER BY f.release_datetime DESC;
04 · Schema

Six tables, fully denormalized for analytics.

The shared database exposes a flat, analytics-friendly schema. FILINGS is the fact table; everything else is a dimension. Company and classification fields are denormalized on the filing row for single-table queries.

FILINGS
16M+ rows. One row per filing. Includes company metadata (denormalized), filing type, source, language, fiscal period, timestamps, processing status, and S3 keys for raw documents. Columns vary by tier — raw-only contracts exclude markdown_s3_key and html_s3_key.
COMPANIES
50K+ rows. Company master data. Name, ticker, LEI, ISINs (as ARRAY), ISIC classification, stock exchange, country, homepage, headcount, shares outstanding, IPO date. Updated daily.
SOURCES
66 rows. Regulatory sources. One row per exchange, regulator, or issuer feed. Source ID, name, country, URL. Foreign key target for FILINGS.source_id.
FILING_TYPES
38 rows. Filing type reference. Code (10-K, IR, ad_hoc, …), name, description. Foreign key for FILINGS.filing_type_id.
FILING_CATEGORIES
11 rows. FRCF disclosure categories. The top-level taxonomy used to classify every filing (Annual Reports, Interim Reports, Ad-hoc Disclosures, etc.).
LANGUAGES
186 rows. Language reference. ISO 639-1 code and name. Foreign key for FILINGS.language_id.
Column Type Notes
filing_id NUMBER Primary key
company_id NUMBER FK to COMPANIES
company_name VARCHAR Denormalized
ticker VARCHAR Exchange ticker
country_code VARCHAR(2) ISO 3166-1 alpha-2
filing_type_code VARCHAR e.g. 10-K, IR, ad_hoc
title VARCHAR Filing title
fiscal_year NUMBER(4) e.g. 2025
fiscal_period VARCHAR FY, Q1–Q4, H1, H2
release_datetime TIMESTAMP_TZ Regulator publish time
processing_status VARCHAR PENDING / PROCESSED / FAILED
raw_document_s3_key VARCHAR S3 path to original PDF/HTML
i

Tier-based column visibility. The markdown_s3_key and html_s3_key columns are only included in listings that include processed content. Raw-tier contracts see the full filing metadata but not the processed content paths.

05 · How data flows

S3 → Snowpipe → your account, automatically.

A filing's journey from regulator to your Snowflake. Hourly incremental exports feed Snowpipe; a merge task deduplicates into the master table; Marketplace auto-fulfillment replicates to your cloud and region.

T+0 s

Filing published at source

Issuer publishes to a regulator or exchange. Our scraper picks it up within minutes.

T+ minutes

API and webhooks fire

The filing is immediately available via the REST API. Webhook subscribers receive filing.received events.

T+ ~1 hour

Incremental Parquet export

A Celery task exports new and updated filings to manifests/incremental/ as Parquet. Runs every hour.

T+ ~1–2 hours

Snowpipe ingests

S3 event notification triggers Snowpipe. New rows land in a staging table. A merge task deduplicates and upserts into the master FILINGS table.

T+ ~1–2 hours

Auto-fulfillment replicates

Snowflake Marketplace auto-fulfillment pushes the new data to your account, regardless of cloud or region. No action needed on your side.

T+ ~1–2 hours

Queryable in your Snowflake

The new filing appears in your shared database. SELECT it immediately — no refresh needed, no cache to invalidate.

!

Latency vs the API. Snowflake delivery runs on an hourly ingestion cycle, so filings typically appear 1–2 hours after the API. For sub-minute latency, use the API or webhooks as the primary channel and Snowflake for analytics.

06 · Access control

Per-client views, Marketplace-native.

Every client gets their own schema with secure views tailored to their contract. Geography filters, column visibility, and tier restrictions are enforced at the view level — not at query time, not in application code.

Geography

Country-filtered by contract.

An EU-only contract sees filings from 32 European countries. A global contract sees everything. The filter is in the secure view definition — you can't query outside your scope even if you try.

Tier

Column-level access by tier.

Raw tier: all filing metadata plus raw_document_s3_key for the original PDF/HTML/XBRL. Full tier: adds markdown_s3_key and html_s3_key for processed content.

Upgrades

Instant, no data migration.

Adding a country or upgrading to full tier = updating one view definition. Takes effect immediately. No data duplication, no re-export, no client-side changes needed.

07 · Raw document access

S3 keys in the table. Documents in S3.

Snowflake delivers structured metadata. The original filing documents (PDF, HTML, XBRL) live in S3. The raw_document_s3_key column gives you the exact path — pair it with a cross-account IAM grant to fetch binaries directly.

Snowflake table

Metadata + S3 keys.

Every filing row includes raw_document_s3_key — the S3 path to the original document. Use it to build download URLs or feed a document processing pipeline.

S3 grant

IAM role for document access.

We grant your IAM role s3:GetObject on the raw document prefix. Same mechanism as S3 bulk delivery — see S3 security docs for details. Provisioned alongside the Snowflake listing.

08 · FAQ

Questions every prospect asks.

If yours isn't here, email [email protected].

My Snowflake is on AWS US East. Yours is on Azure West Europe. Does this work?

Yes. Snowflake Marketplace handles cross-cloud replication via auto-fulfillment. Your account can be on any cloud (AWS, Azure, GCP) in any region. Replication is managed by Snowflake — no additional setup on your end.

Is there a timing difference between the API and Snowflake?

Yes. The API delivers filings in minutes. Snowflake runs on an hourly ingestion cycle, so filings typically appear 1–2 hours later. Both are well within a 2–4 hour SLA. If sub-hour Snowflake latency becomes important, we can enable near-real-time Snowpipe.

Can I get just one region — say, EU only?

Absolutely. Your listing's secure views are scoped to the geography in your contract. An EU-only contract sees filings from 32 European countries and nothing else. Expanding scope later is a view update — no data migration.

Do I need to build an ETL pipeline?

No. That's the point. Accept the Marketplace listing, and the data appears as a database. New filings flow in automatically via Snowpipe and auto-fulfillment. You don't build, schedule, or maintain anything.

Can I join this to my internal tables?

Yes. The shared database lives alongside your own databases. Standard SQL joins work — JOIN FINANCIALREPORTS.FILINGS ON company_id = …. Filing IDs are stable and match the REST API's id field.

What about the actual PDF/HTML documents?

The Snowflake table contains raw_document_s3_key — the S3 path to the original file. We provision a cross-account IAM grant so you can fetch documents directly from S3. See §07 · Raw document access.

How does this compare to S3 bulk delivery?

S3 gives you raw Parquet, JSONL, and Markdown files — ideal for Spark/Athena/DuckDB workflows and LLM training data. Snowflake gives you a ready-to-query SQL database. Same data, different access pattern. See §02 · Choosing a channel.

What happens if I upgrade my tier mid-contract?

We update the secure view definitions to include additional columns or geographies. The change takes effect immediately — no data duplication, no re-export, no client-side changes.

Ready to add regulatory filings to your Snowflake?

Send us your Snowflake account locator and the geography you need. We'll provision a private Marketplace listing within a business day.