AI エージェントのためのクローラー。Scout, read, crawl.

AI は既に検索できます。Marrow はその先へ ── ページそのものを、きれいな形で取ってきます。 安く偵察し、必要な所だけ精読。キャッシュは標準装備です。

$ npx -y marrow-setup --email you@example.com
Marrow

監視機能は取り下げています。定期チェック・webhook・changeTrackingsections は、抽出の設計を作り直すあいだ凍結中です(該当の呼び出しは 410 monitoring-withdrawn を返します)。削除ではなく凍結ですが、 再開の時期は決まっておらず、代わりのエンドポイントもありません。 このページの他の内容は、今日そのまま動きます。

なぜ Marrow?

🔐

ログインの先まで届く

検索は壁の手前で止まります。Marrow は越えられます。 2FA も CAPTCHA も SSO も人が通し、その先をあなた自身のブラウザで自動化します。

📦

スニペットでなく、クリーンなデータ

Marrow はクリーンな Markdownを返します ── 人間も AI も読めます。

🪙

トークン効率&安い

scout → read: marrow_scout でリンク・構造を見て、marrow_read で精読します ── 無駄なトークンを抑えます。キャッシュも標準装備で、二度目からは速くて安い。

RAG を組んでいる方へ: セクションごとに安定した id が振られるので、ベクトル DB への upsert がそのまま使えます。

Marrow + エージェント ── AI のためのクローラー

エージェントは、ほしい情報を一度の検索では見つけません。ページを scout し、読み、言い換えて、また読む ── そうやって何度も回るうちに答えが集まります。一発の検索では届きません。

Marrow は、その繰り返しを安くします。再読はキャッシュでほぼ無料。だからエージェントは、 必要なものが揃うまで気兼ねなく回れます。リクエストごと・チェックごとに課金するクローラーは逆 ── 回すほど高くつきます。Marrow はエージェントが何度も回せる設計になっています。

使い方

1 · 偵察してから精読

「Marrow で検索して」というと、marrow_scoutmarrow_read でクリーンな markdown を取得します。

2 · 範囲を区切ってクロール

深さとページ数で区切って、クリーンな markdown で受け取ります ── サイト丸ごとのダンプにはしません。

3 · クリックの先を取る

「詳細を表示」を押さないと出てこない行は、depth:"deep" が描画・展開してから読みます。

土砂を運ぶのは、もうやめよう。「Marrow」を抜き出せ。

多くのクローラーは、ブルドーザーのようにクローリングします ── ナビも広告もフッターも 関連商品カルーセルも全部。Marrow は髄(マロウ)を狙います。描画されたページを採点し、 本文を担っている部分だけを残して周りの飾りを落とします。骨ではなく、栄養のある 髄だけをお届けします ── それが名前の由来です。

ページトークン(vs Firecrawl・同一URL)
クリーンな記事(Wikipedia)同等 ── 削る土砂が少ない
ニュース記事(BBC)約 30% 少ない
重い EC(Shopify 製品)約 75% 少ない
そのページの裏にある製品フィード最大 26× 小

余計なものが多いページほど効きます。 Firecrawl と Marrow で 同一 URL で直接実測しました。しかもこれは1ページあたりの話で ── scout → read が「読まなくていいページを読まない」ことで、さらにトークンを節約します。

スクレイプした中身は、あなたのもの。

何を見張っているか ── 競合の価格・採用ページ・規約改定 ── それはあなたの戦略そのものです。 クローラーが知る話ではありません。Marrow は漏れるものが無いように作ってあります。

🔑

アカウントもパスワードも無い

API キーそのものが資格情報です ── gh authstripe login と同じ。 登録するものが無いので、フィッシングされるものもありません。キーを捨てれば、消えます。

💳

課金は Stripe

カード情報は Stripe に直行します ── Marrow は一切見ませんし、名前も住所も保存しません。 手元にあるのは、メールのハンドルとクレジット残高だけです。

🙈

アクティビティログ無し

抽出ワーカーはステートレス、キャッシュは内容アドレス方式です ── 「ページが存在する」ことは記録しても 誰が引いたかは記録しません。あなたが引いた URL の一覧ダッシュボードは存在しません。

多くのクローラーは、まさにそのダッシュボードを持っています。あなたが何を読んだかは企業秘密 ── Marrow は持ちません。

エージェントに導入

ワンコマンド ── 無料キーを発行して、使っている全エージェントに Marrow を配線します。

$ npx -y marrow-setup --email you@example.com

または手動で設定

claude mcp add marrow \
  -e MARROW_API_KEY=mrw_xxx \
  -- npx -y @marrowdev/cloud-mcp
{
  "mcpServers": {
    "marrow": {
      "command": "npx",
      "args": ["-y", "@marrowdev/cloud-mcp"],
      "env": { "MARROW_API_KEY": "mrw_xxx" }
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.marrow]
command = "npx"
args = ["-y", "@marrowdev/cloud-mcp"]
env = { MARROW_API_KEY = "mrw_xxx" }

ツール: marrow_scout · marrow_read · marrow_search · marrow_crawl · marrow_screenshot · marrow_usage

または、シェルから

ターミナル派へ。シェル・スクリプト・CI から Marrow を直接使えます。

$ npm i -g @marrowdev/cli

marrow scout <url> · marrow read <url> · marrow search "…" · marrow crawl · marrow screenshot
出力は Flux NDJSON、--md で markdown。 CLI ドキュメント →

または API を叩く

Bearer キー付きの素の HTTP です。REST API は Firecrawl 互換です。

import requests

BASE = "https://api.marrow.navii.online"
H = {"Authorization": "Bearer mrw_xxx", "Content-Type": "application/json"}

# まず偵察 ── リンクと構造だけ、安く
s = requests.post(f"{BASE}/v1/scout", headers=H, json={
    "url": "https://example.com/pricing",
})
print(len(s.json()["data"]["links"]))

# 必要な所だけ精読
r = requests.post(f"{BASE}/v1/scrape", headers=H, json={
    "url": "https://example.com/pricing",
    "formats": ["markdown"],
})
print(r.json()["data"]["data"]["body"][:500])
const BASE = "https://api.marrow.navii.online";
const H = { Authorization: "Bearer mrw_xxx", "Content-Type": "application/json" };

// 偵察してから精読
const scout = await fetch(`${BASE}/v1/scout`, {
  method: "POST", headers: H,
  body: JSON.stringify({ url: "https://example.com/pricing" }),
});
console.log((await scout.json()).data.links.length);

const res = await fetch(`${BASE}/v1/scrape`, {
  method: "POST", headers: H,
  body: JSON.stringify({
    url: "https://example.com/pricing",
    formats: ["markdown"],
  }),
});
const { data } = await res.json();
console.log(data.data.body.slice(0, 500));
# 偵察してから精読
curl -X POST https://api.marrow.navii.online/v1/scout \
  -H "Authorization: Bearer mrw_xxx" -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/pricing"}'

curl -X POST https://api.marrow.navii.online/v1/scrape \
  -H "Authorization: Bearer mrw_xxx" -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/pricing","formats":["markdown"]}'

Firecrawl から乗り換える

REST API は Firecrawl 互換です。そのまま差し替え可能です。

- base_url = "https://api.firecrawl.dev"
+ base_url = "https://api.marrow.navii.online"

そのまま動くもの: /v1/scrape · /v1/crawl · /v1/searchformats: ["markdown"]コードは 1 行しか変わりません。 ⚠️ changeTracking だけは例外で、凍結中のため 410 を返します。

差し替えた時点で増えるもの ── 再読込 0.1 クレジット失敗リクエストは無課金、 そしてアカウント不要(キーが資格情報・クエリは記録しません)。

キーは無料発行・カード不要。npx marrow-setup で今すぐ試せます。

料金

プラン 月次クレジット 日次レート
Free · $0500100 / 日無料で始める
Developer · $9.995,0002,000 / 日申し込む
Pro · $29.9950,00020,000 / 日近日提供開始

scrape/search 1 · scout 0.5 · crawl 2/page · screenshot 2 · Cache-hit 0.1 クレジット。 失敗は無料です。Pro は近日提供開始。