Feedvault Private beta Upload a spreadsheet

Your spreadsheets, served as a private API.

Upload the CSV or JSON files your business already keeps. Feedvault cleans the values, shows what changed since the last upload, and lets a developer, app or partner query it with their own API key and monthly limit.

members-export.csvExcel export, semicolons
Member ID;Name;Email;Joined;Active?;Balance (AED);Country
M-104;Aisha Rahman; Aisha.R@Example.COM ;03/11/2025;yes;1.250,50;AE
M-105;Omar Haddad;omar@example.com;2025-11-04;Y;1,50;AE
M-106;Lena Fischer;LENA@example.net;5 Nov 2025;no;980;DE
M-107;Priya Nair;priya@example.org;11/12/2025;1;empty;AE

A typical export, before Feedvault

  • Three date formats in one column
  • yes, Y, no and 1 for the same question
  • Comma decimals: 1.250,50 and 1,50
  • Stray spaces and capitals in an email
  • An empty balance
Membersoriginal values underneath
The same four rows after import, with detected column types
member_idstring, keynamestringemailemailjoineddateactivebooleanbalance_aednumbercountrystring
M-104Aisha Rahmanaisha.r@example.comfrom " Aisha.R@Example.COM "2025-11-03from 03/11/2025truefrom yes1250.5from 1.250,50AE
M-105Omar Haddadomar@example.com2025-11-04truefrom Y1.5from 1,50AE
M-106Lena Fischerlena@example.netfrom LENA@example.net2025-11-05from 5 Nov 2025falsefrom no980DE
M-107Priya Nairpriya@example.org2025-12-11from 11/12/2025truefrom 1nullfrom emptyAE
Requestmembers in the UAE
curl -G "$FEEDVAULT_URL/v1/data/datasets/ds_8f2c/records" \
    -H "Authorization: Bearer $FEEDVAULT_KEY" \
    --data-urlencode "filter[country]=AE" \
    --data-urlencode "fields=name,email,balance_aed"

Every response says where the data came from and how much of the key's monthly quota is left.

Responseexample, ids shortened
HTTP/1.1 200 OK
content-type: application/json
x-quota-limit: 10000
x-quota-remaining: 9874

{
  "dataset": {
    "id": "ds_8f2c",
    "name": "Members",
    "provenance": {
      "sourceType": "csv_upload",
      "note": "Export of our membership CRM",
      "rightsAttested": true,
      "rightsAttestedAt": "2026-11-05T09:10:31.000Z",
      "lastImportId": "imp_41ad",
      "lastImportAt": "2026-11-05T09:12:04.000Z"
    }
  },
  "records": [
    {
      "key": "M-104",
      "data": {
        "name": "Aisha Rahman",
        "email": "aisha.r@example.com",
        "balance_aed": 1250.5
      },
      "sourceImportId": "imp_41ad",
      "ingestedAt": "2026-11-05T09:12:04.000Z",
      "updatedAt": "2026-11-05T09:12:04.000Z"
    },
    {
      "key": "M-105",
      "data": {
        "name": "Omar Haddad",
        "email": "omar@example.com",
        "balance_aed": 1.5
      },
      "sourceImportId": "imp_41ad",
      "ingestedAt": "2026-11-05T09:12:04.000Z",
      "updatedAt": "2026-11-05T09:12:04.000Z"
    },
    {
      "key": "M-107",
      "data": {
        "name": "Priya Nair",
        "email": "priya@example.org",
        "balance_aed": null
      },
      "sourceImportId": "imp_41ad",
      "ingestedAt": "2026-11-05T09:12:04.000Z",
      "updatedAt": "2026-11-05T09:12:04.000Z"
    }
  ],
  "page": {
    "limit": 25,
    "offset": 0,
    "total": 3,
    "hasMore": false,
    "nextCursor": null,
    "sort": "_key",
    "order": "asc"
  },
  "usage": {
    "key": { "used": 126, "quota": 10000, "remaining": 9874, "period": "2026-11" }
  }
}

From a file on your laptop to an API in five steps

No database to set up and no code to write until you query it. Upload a newer export whenever the data changes.

  1. Upload

    Add a CSV (comma, semicolon or tab separated, UTF-8) or a JSON array of objects, and confirm you own it or are licensed to use it.

  2. Clean

    Feedvault detects each column's type and normalises dates, emails, yes/no values and numbers. Rows that don't fit are listed with the reason.

  3. Review the schema

    Rename columns, change types, choose the key column, and decide which columns are required and searchable.

  4. Create a key

    Give each developer, app or partner their own API key with a monthly request quota and a per-minute rate limit.

  5. Query

    Search, filter, pick fields, sort and page through records over HTTPS. Re-upload and see which records were created, updated or unchanged.

03/11/2025   5 Nov 2025
becomes 2025-11-03   2025-11-05
Dates in ISO format. Day-first or month-first is detected from your values, and you can set it.
yes   Y   on   1
becomes true
Yes/no columns become real booleans.
1.250,50   1,50   (42)
becomes 1250.5   1.5   -42
Comma decimals, thousands separators, currency signs and accounting negatives.
" Aisha.R@Example.COM "
becomes aisha.r@example.com
Emails trimmed, lowercased and checked. Empty cells become null.

One endpoint per dataset, with predictable parameters

Send the key as Authorization: Bearer … or an x-api-key header. Keys can only read datasets that belong to your organisation.

GET /v1/data/datasets/{datasetId}/records

Responses carry x-quota-limit and x-quota-remaining headers, plus the dataset's provenance and the key's usage for the month.

Errors are JSON with a code and a plain message: 400 invalid_query names the unknown column or bad value, 402 key_quota_exceeded when a key's monthly quota is used up, and 429 with a retry-after header when the per-minute rate limit is hit.

Query parameters
ParameterWhat it does
filter[column]=valueExact match on a column in your schema, checked against its type. Up to 10 filters.
q=textSearch across the columns you marked searchable. Every word must match.
fields=a,b,cReturn only these columns.
sort=column&order=descSort by any column, or by _key, _ingested_at or _updated_at.
limit=25Page size, 1 to 100.
cursor=… or offset=…Next page. The response gives you page.nextCursor and page.total.

Keys, quotas and alerts you control

Share access without sharing the spreadsheet. Each key is metered on its own, so you can see who uses what.

One key per consumer

Create a key for each app, developer or partner. Revoke it at any time and only that consumer loses access. A key can read every Feedvault dataset in your organisation, so give partners their own.

Monthly quota and rate limit

Set how many requests a key may make each month and per minute. When the quota is used up the key stops working until the next month; your other keys are unaffected.

Usage alerts

Pick a percentage of the quota. When a key crosses it, an alert appears in the app once that month. Alerts are not emailed yet.

Your data, your rights

Feedvault is for data you already have the right to share.

Feedvault does not crawl or scrape websites. There is no feature for it, and there won’t be.

  • You confirm your rights on every dataset and uploadCreating a dataset and uploading a file both require you to confirm you own the data or are licensed to use it, with a note on where it came from.
  • Provenance travels with the dataEach record shows which import it came from and when, and every API response includes the dataset's source note and attestation date.
  • Connections only with your permissionFuture connectors will use your own account credentials or a feed you are licensed to use, and each one is reviewed before it is offered.
  • Export or deleteYour organisation's datasets are included in its data export, and deleting a dataset removes its records.

What works today, and what doesn't yet

Feedvault is in beta. This list is kept honest so you can decide whether it fits now.

Available now

  • CSV and JSON uploadsComma, semicolon or tab separated CSV in UTF-8; JSON arrays of objects.
  • Cleaning, type detection and schema review
  • Change tracking between uploadsEach record is marked created, updated or unchanged.
  • Search and filter API with per-key quotas and rate limits
  • Usage alerts in the app

Not available yet

  • Live connectors to other systemsNo syncing from CRMs, databases or other apps yet. Upload CSV or JSON files instead.
  • Change notifications to other systems (webhooks)Changes are recorded for each upload, but nothing is sent to other systems yet.
  • Email alertsUsage alerts appear in the app only. No emails are sent.
  • Paid plansPricing is set at launch. The beta is free.

Plans, by how much data you move

Prices will be published at launch. During the beta, everyone is on the free plan.

Monthly limits for each plan
LimitFreeFree during the betaStarterPricing at launchProPricing at launch
Rows imported per month10,000250,0002.5 million
API requests per month10,000250,0002.5 million
Storage100 MB2 GB20 GB

Questions

Do you scrape websites?

No. Feedvault only works with files you upload and confirm you own or are licensed to use. It does not crawl, scrape or collect data from websites, and there is no feature for it.

Which files can I upload?

CSV files separated by commas, semicolons or tabs (including Excel exports) in UTF-8, and JSON files containing an array of objects or {"records": [...]}.

How does it handle 03/11 vs 11/03 dates?

If any value in your file has a day above 12, the order is detected from that. Otherwise it defaults to day-first, which is common in the UAE, and you can switch it to month-first when you review the schema.

What happens when I upload a newer version?

Records are matched on the key column you chose. Each one is marked created, updated or unchanged, so you can see exactly what the new export changed.

Can Feedvault pull data from my CRM or database automatically?

Not yet. Live connectors are not available; for now you upload CSV or JSON exports. Any future connector will use your own credentials or a licensed feed.

Will other systems be notified when data changes?

Not yet. Feedvault records what changed with each upload, but it does not send webhooks or other notifications to outside systems.

Who can query my data?

Only requests that carry one of your organisation's API keys. Each key has its own quota and rate limit, and you can revoke it at any time.

What does it cost?

The beta is free. Prices for the Starter and Pro plans will be published at launch, before anyone is charged.

Hear when Feedvault launches

You can start uploading during the beta today. Join the list if you'd like an email when paid plans and connectors arrive.