Skip to content

npm library · v1.0.0 · MIT

Query SEO crawl data from JavaScript or TypeScript

crawlcove-js is the crawlcove-export package: a typed JavaScript and TypeScript library with no dependencies that reads the Crawl Cove JSON export, or the desktop app's CSV export, and answers the questions you would otherwise write a loop for. Which pages are broken, which titles are duplicated, how many issues of each type, what does depth 0 to 2 look like. Its issue rules are the same ones the MCP server's get_issues tool and the Google Sheets add-on use, so a script, an AI assistant and a spreadsheet built on the same export agree on the numbers. It runs in Node and in the browser.

Free · MIT-licensed · README checked September 2026

Install and run

npm install github:CrawlCove/crawlcove-js
# or pin a release:
npm install https://github.com/CrawlCove/crawlcove-js/archive/refs/tags/v1.0.0.tar.gz

Using it in your own code

import { Crawl, readExport } from 'crawlcove-export'

// Node: read a JSON or CSV export from disk
const crawl = await readExport('crawl-export.json')

// anywhere: from text or a parsed object
const crawl2 = Crawl.from(jsonTextOrCsvTextOrObject)

crawl.summary()
crawl.pagesWithStatus(404).map((p) => p.url)
crawl.where({ indexable: true, maxDepth: 2, urlContains: '/blog/' })
crawl.issues(['missing-title', 'duplicate-title'])
crawl.duplicateTitles()       // Map<title, ExportPage[]>
crawl.toCsv()                 // the app's 29-column CSV, formula-safe

The README in the repo is the authoritative reference; the commands above are copied from it as of September 2026. If they disagree, the README is newer.

What the library gives you

  • Reads the JSON export (export spec 1.0.0) and the desktop app's CSV export, from a file in Node or from text or a parsed object anywhere.
  • summary(): pages, indexable pages, pages by status, issue count, issues by type, pages with issues, and whether the crawl hit its page cap.
  • Filters: pages by status, by indexability, by maximum depth, by URL substring, or one page by URL.
  • Issue rules: broken page, missing, long or duplicate title, missing or long meta description, missing or multiple H1, noindex, redirect chain of two or more hops, and missing canonical on an indexable page. Title, meta and H1 rules skip non-200 pages, so an error page is one issue, not five.
  • toCsv() matches the desktop app's CSV export in shape: UTF-8 with a BOM, CRLF, the 29 documented columns, yes/no booleans, empty cells for null, and formula-safe cells. fromCsv() reverses it.
  • Typed throughout: ExportPage, CrawlExport, Issue, IssueType, PageFilter and Summary, plus the ISSUE_TYPES, ISSUE_DESCRIPTIONS and CSV_COLUMNS constants.

Limits worth knowing

  • The npm package name is crawlcove-export, but it is not on the registry yet; install from GitHub or the release tarball until it is.
  • The CSV carries no exportedAt, auditRunId or runIncomplete, so a crawl loaded from CSV takes neutral values for those unless you pass them.
  • It reads exports; it does not crawl. The data comes from the desktop app, the CLI, or a converted Screaming Frog export.

Works with Crawl Cove

crawlcove-export JavaScript library covers the checks it lists above. The desktop app runs the full site audit: every page, every finding ranked by impact, history over time and Search Console data alongside. See the desktop checker or compare the plans.

Frequently asked questions

Where does the crawl data come from?
From a Crawl Cove export. Run a crawl in the desktop app, open Reports and export JSON or CSV; the library reads either. The CLI's JSON output uses the same field names where it checks the same things, and a Screaming Frog export can be converted first with crawlcove-sf-import.
Does it run in the browser?
Yes. The parsing, filtering and issue rules have no Node dependencies, so Crawl.from() works on text or an object in any modern browser. Only readExport(), which reads a file from disk, is Node-only.
Are the issue rules the same as the app's?
They are the same rules the MCP server's get_issues tool and the Google Sheets add-on apply, so those three agree with each other. The desktop app runs a much larger check set on live pages, and ranks findings by impact once Search Console is connected; the library works from the exported fields only.
Can I install it with npm install crawlcove-export?
Not yet. The package name is reserved for it and publishing is coming; until then install from GitHub with npm install github:CrawlCove/crawlcove-js, or pin the release tarball.

Stop guessing.
Start fixing.

Crawl Cove runs on your machine, connects to your real ranking data, and tells you exactly what to fix first. No per-feature paywalls, no spreadsheets, no guesswork.

28 days risk-free · No card required