Vue.js Documentation Scraper avatar

Vue.js Documentation Scraper

Pricing

from $4.53 / 1,000 results

Go to Apify Store
Vue.js Documentation Scraper

Vue.js Documentation Scraper

Scrape the official Vue.js docs into rows: title, URL, section, headings, full text and raw Markdown. Export to CSV, JSON, Excel, or XML.

Pricing

from $4.53 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

ParseForge Banner

πŸ“— Vue.js Documentation Scraper

πŸš€ Export the entire Vue.js documentation in seconds. All 110 pages of vuejs.org, 15 fields each, with the raw Markdown source next to the rendered text.

This Actor turns the official Vue.js documentation into a clean dataset. It reads the site's own sitemap.xml, fetches every page, and returns one row per page: title, canonical URL, section, headings, word count, code block count, the GitHub source link, the full readable text, and the original Markdown that VitePress rendered the page from. No API key, no login, no browser automation.

Coverage is the whole public documentation: 110 pages on vuejs.org across 12 top-level sections (52 guide pages, 29 API reference pages, 9 partner pages, 6 about pages, 5 style guide pages, plus tutorial, examples, glossary, error reference, ecosystem, sponsor and translations). The nine community translation sites are separate hosts and work the same way, from 108 pages on pt.vuejs.org up to 122 on de.vuejs.org. A five page sample finishes in about three seconds.

🎯 Target AudienceπŸ’‘ Primary Use Cases
AI and RAG engineersBuild a grounded Vue knowledge base from the official reference, in Markdown that chunks cleanly.
Developer tooling teamsShip offline docs search, IDE hover help, or a docs powered chatbot.
Technical writers and translatorsCompare an English page against its translated twin, page by page and heading by heading.
Educators and content teamsPull structured examples, code block counts and section maps for courses and tutorials.
Framework maintainersTrack what the docs say about an API before and after a release.

πŸ“‹ What the Vue.js Documentation Scraper does

πŸ’‘ Why it matters: documentation is the single best grounding source for a coding assistant, and Vue publishes both a rendered page and its Markdown source. This Actor collects both in one pass, so your index keeps the headings, code fences and links that the rendered text throws away.

  • πŸ—ΊοΈ Sitemap first. Give it https://vuejs.org and it reads the official sitemap, so you get the complete page list instead of whatever a link crawler happens to reach.
  • πŸ“ Raw Markdown included. Every page is also published at its .md address. The Actor fetches it and stores it beside the rendered text, so headings, code fences and links survive.
  • πŸ”– Heading outline per page. Each row carries an array of H2 and H3 headings with their anchor ids, which is exactly what a chunker needs to split a long page.
  • 🧭 Section and subsection. Rows are labelled from the URL path, so you can filter to guide, api, or a single subsection like guide/essentials.
  • 🌍 Every translation. Point it at cn.vuejs.org, ja.vuejs.org, fr.vuejs.org or any other translation host and the same 15 fields come back, with the detected language code.
  • 🎯 Targeted crawls. Start from one page instead of the root, and turn link following on or off to control exactly how far the crawl goes.

Results export to CSV, JSON, Excel or XML, or straight from the Apify API.

🎬 Full Demo (🚧 Coming soon)

A short walkthrough video is in production. Until then, the sample records below are exactly what a run returns.

πŸ“Š Output

Every row is one documentation page. Fifteen fields, no nulls except the error column.

FieldTypeDescription
πŸ“Œ titlestringPage title, with the site suffix removed.
πŸ”— urlstringCanonical page URL, normalised without the .html extension.
🧭 pathstringPath on the host, for example /guide/essentials/list.
πŸ“ sectionstringFirst path segment: guide, api, about, style-guide and so on.
πŸ—‚ subsectionstringSecond segment on nested pages, N/A on two level pages.
πŸ—£ languagestringLanguage code from the page itself, for example en-US or zh-CN.
πŸ”’ wordCountintegerWords in the readable body text.
πŸ’» codeBlockCountintegerNumber of code blocks on the page.
πŸ™ githubEditUrlstringLink to the Markdown source in the docs repository, N/A when the host does not publish one.
πŸ“ markdownUrlstringAddress of the raw Markdown file, N/A when the host does not serve it.
πŸ“„ contentstringFull readable text of the page, boilerplate stripped.
🧾 markdownstringOriginal Markdown source, front matter removed.
πŸ”– headingsarrayH2 and H3 headings as { level, text, anchor } objects.
πŸ•’ scrapedAtstringISO 8601 timestamp of collection.
❌ errorstring or nullPopulated only on an error row, null on real records.

Three real records from a run (long text fields are cut with ... for readability here, the dataset stores them in full):

[
{
"title": "Community Guide",
"url": "https://vuejs.org/about/community-guide",
"path": "/about/community-guide",
"section": "about",
"subsection": "N/A",
"language": "en-US",
"wordCount": 796,
"codeBlockCount": 0,
"githubEditUrl": "https://github.com/vuejs/docs/edit/main/src/about/community-guide.md",
"markdownUrl": "https://vuejs.org/about/community-guide.md",
"content": "Community Guide Vue's community is growing incredibly fast and if you're reading this, there's a good chance you're ready to join it. So... welcome!Now we'll answer both what the community can do for you and what you can ...",
"markdown": "# Community Guide {#community-guide}\n\nVue's community is growing incredibly fast and if you're reading this, there's a good chance you're ready to join it. So... welcome!\n\nNow we'll answer both what t ...",
"headings": [
{ "level": 2, "text": "Resources", "anchor": "resources" },
{ "level": 3, "text": "Code of Conduct", "anchor": "code-of-conduct" },
{ "level": 3, "text": "Stay in the Know", "anchor": "stay-in-the-know" }
],
"scrapedAt": "2026-09-08T05:29:16.988Z",
"error": null
},
{
"title": "Frequently Asked Questions",
"url": "https://vuejs.org/about/faq",
"path": "/about/faq",
"section": "about",
"subsection": "N/A",
"language": "en-US",
"wordCount": 1306,
"codeBlockCount": 0,
"githubEditUrl": "https://github.com/vuejs/docs/edit/main/src/about/faq.md",
"markdownUrl": "https://vuejs.org/about/faq.md",
"content": "Frequently Asked Questions Who maintains Vue? Vue is an independent, community-driven project. It was created by Evan You in 2014 as a personal side project. Today, Vue is actively maintained by a team of both full-time ...",
"markdown": "# Frequently Asked Questions {#frequently-asked-questions}\n\n## Who maintains Vue? {#who-maintains-vue}\n\nVue is an independent, community-driven project. It was created by [Evan You](https://x.com/evan ...",
"headings": [
{ "level": 2, "text": "Who maintains Vue?", "anchor": "who-maintains-vue" },
{ "level": 2, "text": "What's the difference between Vue 2 and Vue 3?", "anchor": "what-s-the-difference-between-vue-2-and-vue-3" },
{ "level": 2, "text": "Is Vue 2 Still Supported?", "anchor": "is-vue-2-still-supported" }
],
"scrapedAt": "2026-09-08T05:29:17.111Z",
"error": null
},
{
"title": "Releases",
"url": "https://vuejs.org/about/releases",
"path": "/about/releases",
"section": "about",
"subsection": "N/A",
"language": "en-US",
"wordCount": 636,
"codeBlockCount": 0,
"githubEditUrl": "https://github.com/vuejs/docs/edit/main/src/about/releases.md",
"markdownUrl": "https://vuejs.org/about/releases.md",
"content": "Releases Checking latest version... A full changelog of past releases is available on GitHub.Release Cycle Vue does not have a fixed release cycle.Patch releases are released as needed.Minor releases always contain new f ...",
"markdown": "# Releases {#releases}\n\nA full changelog of past releases is available on [GitHub](https://github.com/vuejs/core/blob/main/CHANGELOG.md).\n\n## Release Cycle {#release-cycle}\n\nVue does not have a fixed ...",
"headings": [
{ "level": 2, "text": "Release Cycle", "anchor": "release-cycle" },
{ "level": 2, "text": "Semantic Versioning Edge Cases", "anchor": "semantic-versioning-edge-cases" },
{ "level": 3, "text": "TypeScript Definitions", "anchor": "typescript-definitions" }
],
"scrapedAt": "2026-09-08T05:29:17.060Z",
"error": null
}
]

✨ Why choose this Actor

  • πŸ“ Markdown and rendered text in the same row. Most documentation crawlers give you one or the other. Here you get the readable text for search and the original Markdown for chunking and diffing.
  • πŸ—ΊοΈ Complete by construction. The page list comes from the official sitemap, not from following links, so nothing is missed because a page happens to be unlinked.
  • 🚫 No nulls. Fields the source withholds come back as N/A, so a CSV opens cleanly in Excel and a JSON loader never trips on a missing key.
  • 🧹 Clean text. Anchor icons, ad slots, previous and next links and hidden elements are stripped before the text is extracted.
  • πŸ”— URL normalisation. /guide/quick-start, /guide/quick-start.html and /guide/quick-start/ are one page, not three duplicate paid rows.
  • ⚑ No browser. Plain HTTP against a static site: fast, cheap and stable, with the proxy off by default and available if your network needs it.
  • 🌍 Translations included. The same run shape works on every community translation host.

πŸ“ˆ How it compares to alternatives

ApproachComplete page listRaw MarkdownHeading outlineSetup
This ActorYes, from the sitemapYes, per pageYes, with anchorsPaste a URL
Generic website crawlerOnly what is linkedNo, HTML to text onlyRarelyDepth, selectors and filters to tune
Working from the docs repositoryYesYesNo, you parse it yourselfLocal tooling, and the repo layout is not the site layout
Manual copy and pasteNoNoNoHours per section

Honest ceilings: vuejs.org publishes 110 pages, so a single host run cannot return more than that no matter how high you set the item limit. Only the current Vue 3 documentation is published on these hosts, so there is no versioned archive to scrape. The Markdown source is served by vuejs.org and by the cn, fr, ko, pt and ru translations, but not by ja.vuejs.org, where markdown and markdownUrl return N/A.

πŸš€ How to use

  1. Create a free Apify account. New accounts get $5 in free platform credit: sign up here.
  2. Open the Actor and leave the prefilled start URL https://vuejs.org in place, or replace it with the page or translation host you want.
  3. Set Max Items. Free accounts preview 10 items per run. Paid accounts can go up to 1,000,000, though a single host tops out at its own page count.
  4. Narrow the scope, optionally. Pick sections such as guide or api, and switch link following off when you want only the URLs you listed.
  5. Start the run. A full 110 page pass takes a couple of minutes.
  6. Export. Download the dataset as CSV, JSON, Excel or XML, or pull it from the Apify API.

πŸ’Ό Business use cases

πŸ€– Ground an internal coding assistant. A platform team runs the Actor over vuejs.org every week, chunks the markdown field on the headings anchors, and refreshes the vector index behind their internal assistant. Answers cite the exact documentation page rather than a model's memory of Vue 2.

πŸ” Ship documentation search in a developer product. An IDE extension vendor bundles the dataset so users can search the official Vue reference offline. title, section and headings power the result list, content powers full text matching, and url sends the user to the live page.

🌐 Manage a translation programme. A localisation lead pulls vuejs.org and cn.vuejs.org in two runs, joins the rows on path, and compares wordCount and the heading arrays to find pages where the translation has drifted from the source.

πŸ“š Build course and tutorial material. A training company filters to section = guide, sorts by codeBlockCount, and pulls the most example dense pages as the backbone of a curriculum, with the Markdown ready to paste into lesson notebooks.

πŸ”Œ Automating Vue.js Documentation Scraper

  • Schedule it. Apify Schedules can run the Actor nightly or weekly and keep the dataset current with no babysitting.
  • Make and Zapier. Trigger on a finished run and push new rows into Notion, Airtable, or a Google Sheet.
  • Slack. Post a message when a run finishes so the docs channel knows the index was refreshed.
  • Airbyte and warehouses. Sync the dataset into BigQuery, Snowflake or Postgres for joins against your own analytics.
  • GitHub. Fire a workflow that rebuilds your search index whenever a scheduled run reports a changed page count.
  • Google Drive. Drop the CSV export into a shared folder for writers and translators who do not use the console.

🌟 Beyond business use cases

  • Research. Study how a major open source project structures its documentation: section sizes, code density, heading depth.
  • Personal. Keep an offline copy of the reference for a flight or a spotty connection, in Markdown your notes app understands.
  • Non-profit and education. Build free study material for a community coding class, in any of the translated languages.
  • Experimentation. Use a real, well written, freely available corpus to benchmark chunking strategies, embeddings, or summarisation.

πŸ€– Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or your own agent:

I want to build a retrieval index over the official Vue.js documentation. I have an Apify Actor that returns one row per documentation page with these fields: title, url, path, section, subsection, language, wordCount, codeBlockCount, githubEditUrl, markdownUrl, content, markdown, headings, scrapedAt, error. The headings field is an array of { level, text, anchor }. Suggest a chunking strategy that splits the markdown on headings, keeps code blocks intact, and stores the anchor so I can deep link back to the page.

The Actor also works through Apify's API and MCP integration, so an agent can trigger a run and read the dataset itself.

❓ Frequently Asked Questions

Do I need a Vue.js account or an API key?

No. The documentation is public and the Actor reads it exactly as a browser would.

How many pages can I get?

110 on vuejs.org today. Translation hosts range from 108 to 122. Set a higher item limit and you simply get everything the host publishes.

What is the difference between content and markdown?

content is the readable text of the rendered page with navigation and boilerplate stripped. markdown is the original source file that generated the page, with headings, code fences and links intact. Use content for search, markdown for chunking and diffing.

Why is markdown sometimes N/A?

A few pages are not published at a .md address, and ja.vuejs.org does not serve Markdown at all. The field carries the N/A sentinel rather than a null so exports stay clean.

Can I scrape the translated documentation?

Yes. Each translation is its own host. Put https://cn.vuejs.org or https://ja.vuejs.org in the start URLs and the language field tells you which one a row came from.

Can I collect only part of the docs?

Yes. Use the Sections filter to keep only guide, api, style-guide and so on, or list specific page URLs and switch link following off.

Does it need a proxy?

No. vuejs.org is a static site with no anti-bot layer, so the proxy is off by default. Turn it on only if your own network cannot reach the site.

How fresh is the data?

Every run fetches live pages. scrapedAt records the exact moment each row was collected.

Does it capture code examples?

Yes. Code blocks stay inside the markdown field as fenced blocks, and codeBlockCount tells you how many a page has before you download anything.

Will duplicate URLs be charged twice?

No. Paths are normalised, so the .html variant, the trailing slash variant and the bare path are treated as one page.

Can I get old versions of the docs?

No. These hosts publish the current Vue 3 documentation only, and the Actor reports what is live.

What happens if a page fails to load?

That page is skipped and logged. If nothing at all could be fetched, the dataset carries a single row with an error message so a failed run is never silent.

Which export formats are supported?

CSV, JSON, Excel and XML from the console, plus the Apify API and integrations.

πŸ”Œ Integrate with any app

Runs and datasets are available through the Apify API, the JavaScript and Python clients, webhooks, scheduled runs, and the Apify MCP server, so the output drops into an existing pipeline without glue code.

πŸ’‘ Pro Tip: browse the complete ParseForge collection for more clean, well documented data Actors.

πŸ†˜ Need Help? Open our contact form

⚠️ Disclaimer: This is an independent tool and is not affiliated with, endorsed by, or sponsored by Vue.js or the Vue.js core team. It collects only publicly available data from the public documentation site.