Give your AI agent a live, versioned view of any website.
Note: this codebase was originally built and named Vexaro, before the product was renamed to Quorel. The code, commit history, and package names in this repo still reflect the original name. A rename pass is planned. This repo is public, you're looking at the real, current implementation right now: github.com/var-raphael/vexaro. The live product, docs, and public API are already fully rebranded as Quorel: quorel.vercel.app
Describe the fields you want, in plain English. Quorel extracts them nightly, keeps every past version permanently queryable, and hands your AI agent an MCP tool that can read, query, and even fix the data directly, without you writing a scraper.
Live and public beta: quorel.vercel.app Docs: quorel.vercel.app/docs/quickstart
Most data tools hand you today's snapshot and move on. Quorel keeps every past version, permanently queryable, so you can see what changed and when, not just what's true right now.
- Plain-English schema definition. Describe the fields you want (
title (string), the title of the article) and Quorel figures out extraction. - Nightly refresh, versioned. Every refresh is a saved, diffable version. Compare any two versions side by side, roll back in one click, or freeze a version so it can't change again.
- Fork any public dataset. Start from someone else's dataset the way you'd fork a repo.
- MCP on every plan, including Free. Claude or any MCP-compatible agent can query a dataset, ask what changed since last week, and even fix bad rows itself, publishing the correction as a new, reversible version.
- No scraper maintenance. Extraction adapts when the underlying page layout changes, instead of silently breaking.
Public datasets need no account, no API key. Just a GET request:
GET https://quorel.vercel.app/api/1/hacker-news-top/active/
?format=json
&limit=5
&sort=score:desc
[
{
"title": "Show HN: I built a source of truth for the web",
"score": 412,
"comments": 187,
"url": "https://news.ycombinator.com/item?id=..."
}
]Browse all public datasets in the marketplace, swap the slug, and query any of them the same way.
https://quorel.vercel.app/api/{dataset_id}/{name-slug}/{version}/
| Part | Meaning |
|---|---|
dataset_id |
The numeric ID of the dataset |
name-slug |
The dataset name, lowercased and hyphenated |
version |
active (pinned version), latest, or v1, v2, v3, etc. |
Every endpoint accepts the same set of parameters, stack as many as you need:
| Parameter | Default | Description |
|---|---|---|
format |
json |
Output format: json, jsonl, csv, tsv, xml, parquet |
limit |
all | Max number of entities to return |
offset |
0 |
Skip the first N entities |
sort |
none | Sort by a field, e.g. sort=score:desc |
keywords |
none | Full-text search across all fields, comma-separated for OR |
keywords_mode |
or |
Use and for AND search across keywords |
filter |
none | Exact match on a field, e.g. filter=category:finance. Repeatable |
filter_contains |
none | Partial match on a field. Repeatable |
keep_field |
none | Return only these fields (dot-notation supported) |
drop_field |
none | Remove these fields from the response |
dedup |
false |
Remove duplicate entities. Use dedup_key=field1,field2 to dedup on specific fields |
denull |
false |
Strip null and empty string values recursively |
flatten |
false |
Flatten nested objects into dot-notation keys (auto-applied for csv, tsv, parquet) |
sample |
none | Return N randomly sampled entities |
count |
false |
Return only the count of matched entities |
alt |
false |
Return the alt version of the dataset, if one exists |
include_source |
true |
Include the _source field (origin URL of each entity) |
pretty |
true |
Pretty-print JSON output |
| Access | Limit |
|---|---|
| Public (no auth) | 100 requests/minute, per IP |
| Private (Bearer token) | 300 requests/minute, per IP |
Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Free account, no credit card required. One dataset, up to 20 URLs.
- Sign up at quorel.vercel.app/auth
- Paste URLs or describe your intent. Import URLs directly, or describe what you want in plain English and Quorel discovers sources via web search.
- Define your schema. Tell Quorel which fields you want and what they mean, e.g.
score (number), the upvote count. - Wait for processing. Quorel crawls your URLs, runs AI extraction against your schema, and versions the result.
- Hit your endpoint. Query it exactly like the public example above, using your dataset ID and slug from the dashboard.
GET https://quorel.vercel.app/api/42/my-dataset/active/
Authorization: Bearer your_private_key
Find your private key in your dataset's dashboard page.
Every dataset ships with an MCP server, on every plan, including Free. Claude or any MCP-compatible agent can filter it, sort it, ask what changed, and even fix bad rows itself.
Inside a Claude chat:
> what changed on job-board-listings this week
→ queried v14 vs v9, 23 postings added, 8 removed
> fix the missing salary fields and publish v15
→ reviewed 200 rows, filled 14 fields from listing text
→ live at /job-board-listings/v15
Agent-made changes land in the same versioned, reversible system as anything done by hand, nothing is silently overwritten. Full details: quorel.vercel.app/docs/mcp
- See exactly what changed. Compare any two versions side by side: added rows, removed rows, changed values.
- Roll back in one click. A bad refresh pulled in dirty data? Revert instantly, or freeze a version so it can't change again.
- Fork any public dataset. Start from someone else's dataset the way you'd fork a repo, add your own fields, publish your own copy.
Full details: quorel.vercel.app/docs/versioning
| Free | Pro ($19/mo) | Scale | |
|---|---|---|---|
| Datasets | 1 | 5 | Unlimited |
| URLs per dataset | 20 | 100 | 500 |
| Refresh | Nightly | On-demand via ping URL | Custom schedules |
| Version history & rollback | ✅ | ✅ | ✅ |
| MCP access | ✅ | ✅ | ✅ |
| Support | Community | Dedicated |
Scale is coming soon, join the waitlist.
- Competitor pricing history, every price change tracked, not just today's number
- Job market monitoring, postings, salaries, and what got taken down
- Real estate over time, status changes, price drops, days on market, versioned
- Live context for AI agents, Claude checking what changed on a site since last week
- A data backend for apps, query params in, structured API out, no scraping infra to own
This is the working codebase for Quorel, built and maintained solo. It was originally developed under the name Vexaro; the product was later renamed to Quorel, and that rename is reflected across the live product, docs, and public-facing brand. A full rename pass across this codebase (package names, internal references) is planned.
The code is open here: github.com/var-raphael/vexaro. Issues, questions, and contributions are welcome.
Live product: quorel.vercel.app Contact: samuelraphael925@gmail.com