
Docs to Answers Pack — Citable AI-Ready Chunks
Turn a documentation site into a corpus an AI can answer FROM and CITE. Splits on headings rather than character counts, attaches a heading path and deep link to every chunk, drops boilerplate that repeats across pages, and hashes each chunk so you re-embed only what changed.
Docs to Answers Pack — Citable AI-Ready Chunks returns 14 documented output fields, including chunkId, text, headingPath, heading and sourceUrl. Every field carries a declared type, a written description and an example value. 47 runs are recorded on Apify.
- 14
- Output fields
- 18
- Inputs
- 47
- Runs
- 2026-10-16
- Last run
01 — output
What it returns
Every field the extractor writes to its dataset, with its type, a written description and an example value.
| Field | Type | What it holds | Example |
|---|---|---|---|
| chunkId | stringnull | Stable identifier for this chunk, derived from its content so it survives re-runs. | <chunkId> |
| text | stringnull | Plain text content of this record. | <text> |
| headingPath | stringnull | Full heading path from the page root, joined with ' > '. | <headingPath> |
| heading | stringnull | Heading this record sits under. | <heading> |
| sourceUrl | stringnull | The page or endpoint this row was read from. | https://api.example.com/v1/items |
| citationUrl | stringnull | URL the answer cited. | <citationUrl> |
| pageTitle | stringnull | Title of the page this record was read from. | <pageTitle> |
| position | integernull | Position in the source's ordering. | 3 |
| tokensEstimate | integernull | Estimated token count of the text, for sizing against a model context window. | 1180 |
| charCount | integernull | Number of characters in this record's text. | 4821 |
| contentHash | stringnull | Hash of this record's content. | a8f3c9e1b2d40456 |
| duplicateCount | integernull | Rows that repeat a value already seen in this run. | 0 |
| changeType | stringnull | What changed: initial, content, status, or a combination. | content |
| mergedHeadings | stringnull | Headings merged into one line, for compact display. | <mergedHeadings> |
02 — sample
One record
Assembled from the example values declared on the schema above, not invented at render time.
{
"chunkId": "<chunkId>",
"text": "<text>",
"headingPath": "<headingPath>",
"heading": "<heading>",
"sourceUrl": "https://api.example.com/v1/items",
"citationUrl": "<citationUrl>",
"pageTitle": "<pageTitle>",
"position": 3
}03 — input
What you give it
| Input | Type | Description |
|---|---|---|
| startUrls | arrayoptional | Where to start crawling. Point it at a docs homepage or section index. |
| pathPrefix | stringoptional | Only crawl URLs whose path starts with this, e.g. /docs. The single most effective way to keep a blog or marketing site out of your corpus. |
| maxPages | integeroptional | Upper bound on pages fetched. |
| followLinks | booleanoptional | Crawl onward from the pages given. Turn off to process only the exact URLs supplied. |
| sameOriginOnly | booleanoptional | Only follow links on the same domain as the start URL. Turn off only if your docs span subdomains. |
| maxChunkChars | integeroptional | Chunks split on headings first and size second, so this is a ceiling rather than a target. ~1500 chars suits most embedding models. |
| minChunkChars | integeroptional | Anything smaller is folded into the previous chunk instead of being emitted as an unanswerable fragment. |
| overlapChars | integeroptional | Repeat this many characters from the previous chunk so a sentence spanning a boundary stays retrievable from both sides. |
| dropRepeatedBoilerplate | booleanoptional | Remove chunks that repeat across pages — "Was this page helpful?", licence footers, the same admonition on 90 pages. These match every query and answer none. |
| nearDuplicateDetection | booleanoptional | Catch boilerplate that differs by a word or two, not just exact repeats. |
| incrementalMode | booleanoptional | Store a hash per chunk and label each one added / changed / unchanged / removed on the next run. For scheduled refreshes, also provide a Snapshot store ID or name so the baseline survives separate runs. |
| changedOnly | booleanoptional | With incremental mode on, return just the added and changed chunks. Turns this into a scheduled corpus-refresh job. |
| snapshotKey | stringoptional | Key-value store key holding the previous run's hashes. Use different keys to track several corpora independently. |
| snapshotStoreId | stringoptional | Which named key-value store holds the previous run's hashes. Leave blank to use the shared default store "docs-to-answers-state", which is what makes change tracking work between scheduled runs. Set it explicitly to track several corpora independently. |
| concurrency | integeroptional | How many pages to fetch at once. Lower it if the docs site is rate-limiting you. |
| maxItems | integeroptional | Hard cap on results. You are never charged beyond this. |
| proxyConfiguration | objectoptional | Optional. Most documentation sites need no proxy. |
| targetChunkChars | integeroptional | Consecutive short sections on the same page are merged until they reach roughly this size. A 30-token chunk cannot answer a question — it only adds noise to retrieval. Set to 0 to keep every heading as its own chunk. |
04 — run
Run Docs to Answers Pack on your own input
It runs in the cloud on Apify. Nothing to install, and you are billed per result returned rather than per attempt.
05 — questions
Asked before running it
14 of 14 fields described
- What does Docs to Answers Pack — Citable AI-Ready Chunks return?
- It returns 14 documented output fields: chunkId, text, headingPath, heading, sourceUrl, citationUrl, pageTitle, position, tokensEstimate, charCount, contentHash and duplicateCount. Each field declares its type, a description of what it holds, and an example value. The remaining 2 are listed in the output schema below.
- What input does Docs to Answers Pack — Citable AI-Ready Chunks take?
- All 18 inputs are optional and ship with usable defaults, so it runs as-is. They are listed with their types below.
- Does Docs to Answers Pack — Citable AI-Ready Chunks need an API key or login?
- No. None of its inputs is a credential, and it reads only public data. Nothing to sign up for before the first run.
- How do I run Docs to Answers Pack — Citable AI-Ready Chunks?
- It runs on Apify. Start it from its listing with the inputs above, or call the Apify API with the Actor's ID. Results land in a dataset you can export as JSON, CSV or Excel, or read through the Apify API into your own pipeline.