API reference

Cross-platform Search API

Cross-platform search as a pipeline: query intent detection, per-source entity resolution (handles are verified before account legs run), fan-out to live sources only, cross-source deduplication, relevance scoring with a floor, and per-source receipts (latency, cost, kept/dropped). A search with nothing relevant returns NO_USEFUL_SIGNAL and charges 0; partial source failures prorate the price. Set estimate=true for a free plan + max-cost preview.

Endpoint

GET/v1/search/alllive · proven10 credits
Try in Playground

Parameters

Query parameters

Useful optional inputs

  • timeframe — Choose the source time window relevant to your task.

    A narrower window is not a completeness guarantee or a price reduction.

  • sources — Restrict a multi-source request to the platforms useful for your task.

    Use dry_run to inspect the resulting quote before fetching.

  • dry_run — Read a free estimate before fetching sources or scheduling paid work.

    Zero credits; cache status and availability are snapshots rather than guarantees.

NameRequiredDescriptionExample
queryyesWhat to search. Plain topics, "quoted phrases", @handles, owner/repo, domains and URLs are each understood.model context protocol
estimatenotrue returns the execution plan and maximum cost without running anything. Free.true
sourcesnoComma list restricting the fan-out. Default sources (github, hackernews, reddit, bluesky, youtube) run unless excluded; metered sources (tiktok, instagram, linkedin, threads, pinterest, x) run ONLY when named here; free niche lanes (polymarket, google_news) also run only when named. A leg that cannot serve the query kind is skipped with the reason in the receipts. Unknown names are ignored with a warning; 'twitter' is accepted for x.github,reddit,tiktok
excludenoComma list of sources to leave out.bluesky
commentsnotrue fetches the top comments for the top results, cited per item under top_comments — only from sources with a live comment endpoint (reddit, hackernews, youtube; tiktok/instagram when opted in via sources=). Enrichment receipts land in the enrichment section; failures degrade per item.true
lookback_daysnoOnly results from the last N days, where the source supports it.7
timeframenohour | day | week | month | year | all — coarse alternative to lookback_days. Accepted values: hour, day, week, month, year, all. Case, spaces, hyphens and underscores are interchangeable.week
from_datenoISO date lower bound, where the source supports it.2026-01-01
to_datenoISO date upper bound, where the source supports it.2026-03-01
streamno1 answers text/event-stream: plan, source-started, source-completed, cost and enrichment progress events as legs actually run, then one final result event carrying the exact envelope a plain call returns — same billing, same receipts.1
dry_runnoRead a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.1
subject_matchnoSet context for Conversations discovery across explicitly selected sources.context
subject_contextnoOptional subject meaning, up to 240 characters. Requires subject_match=context.authentication software
cursornoOpaque continuation from a context search. Keep the original query, sources, context and date settings.

Examples

Make the request

curl
curl "https://www.monocrawl.com/v1/search/all?query=model%20context%20protocol" \
  -H "x-api-key: mn_your_key_here"
TypeScript
typescript
const key = process.env.MONOCRAWL_API_KEY;
if (!key) throw new Error('Set MONOCRAWL_API_KEY on your server.');
const res = await fetch(
  "https://www.monocrawl.com/v1/search/all?query=model%20context%20protocol",
  { headers: { "x-api-key": key } },
);
const body = await res.json();

if (!body.success) {
  // one error shape for every endpoint — see /docs/errors
  throw new Error(`${body.error.type}: ${body.error.message}`);
}

console.log(body.data, "credits left:", body.credits_remaining);
Python
python
import os
import requests

res = requests.get(
    "https://www.monocrawl.com/v1/search/all?query=model%20context%20protocol",
    headers={"x-api-key": os.environ["MONOCRAWL_API_KEY"]},
    timeout=60,
)
body = res.json()

if not body["success"]:
    # one error shape for every endpoint — see /docs/errors
    raise RuntimeError(f"{body['error']['type']}: {body['error']['message']}")

print(body["data"], "credits left:", body["credits_remaining"])

Response

Response fields and example

This example is illustrative, not a captured live response. Variable-cost operations may settle a charge different from the list price below. A successful response puts the platform payload in data and reports the exact credits used, remaining balance, request id and cache status beside it.

200 · application/json
{
  "success": true,
  "platform": "search",
  "endpoint": "/v1/search/all",
  "data": {
    "_meta": {
      "billing": {
        "charged": 0,
        "formula": "example",
        "list_price": 0
      },
      "intent": {
        "kind": "example",
        "terms": [
          "example"
        ],
        "value": "example"
      },
      "mosaic_version": "example",
      "queries": {
        "bluesky": "example",
        "github": "example",
        "hackernews": "example",
        "reddit": "example",
        "youtube": "example"
      },
      "ranking": {
        "formula": "example",
        "min_relevance": 0,
        "source_weights": {
          "bluesky": 0,
          "github": 0,
          "hackernews": 0,
          "reddit": 0,
          "youtube": 0
        }
      },
      "timings": {
        "total_ms": 0
      }
    },
    "_warnings": [
      "example"
    ],
    "clusters": [
      {
        "item_indices": [
          0
        ],
        "label": "example",
        "size": 0,
        "sources": [
          "example"
        ]
      }
    ],
    "count": 0,
    "divergence": {
      "notes": [
        {
          "detail": "example",
          "formula": "example",
          "kind": "example"
        }
      ],
      "per_source": [
        {
          "items": 0,
          "median_relevance": 0,
          "newest_at": "2026-09-01T12:00:00Z",
          "source": "example",
          "top_engagement": 0
        }
      ]
    },
    "dropped_below_floor": 0,
    "items": [
      {
        "also_seen_on": [
          "example"
        ],
        "author": "example",
        "author_association": "example",
        "body": "example",
        "cid": "example",
        "closed_at": "2026-09-01T12:00:00Z",
        "comments": 0,
        "comments_count": 0,
        "confidence": {
          "reasons": [
            "example"
          ],
          "score": 0
        },
        "created_at": "2026-09-01T12:00:00Z",
        "embed_type": "example",
        "hn_url": "https://example.com/example",
        "id": "example",
        "indexed_at": "2026-09-01T12:00:00Z",
        "is_pull_request": false,
        "is_reply": false,
        "labels": [
          "example"
        ],
        "langs": [
          "example"
        ],
        "likes": 0,
        "number": 0,
        "points": 0,
        "quotes": 0,
        "reactions": 0,
        "replies": 0,
        "reposts": 0,
        "rkey": "example",
        "source": "example",
        "state": "example",
        "story_id": "example",
        "text": "example",
        "title": "example",
        "type": "example",
        "updated_at": "2026-09-01T12:00:00Z",
        "url": "https://example.com/example"
      }
    ],
    "outcome": "example",
    "query": "example",
    "sources": [
      {
        "error": "example",
        "items_found": 0,
        "items_kept": 0,
        "latency_ms": 0,
        "reason": "example",
        "served_by": "example",
        "source": "example",
        "status": "example"
      }
    ],
    "sources_attempted": 0,
    "sources_searched": 0
  },
  "credits_used": 10,
  "credits_remaining": 99,
  "request_id": "req_…",
  "cached": false
}

The example is illustrative and shows a documented subset of data. The fields below are optional across supported sources; nullable fields can also be absent. Preserve unknown values and accept additional fields.

Schema basis: observed response shapes, not an exhaustive field specification. See schema coverage and validation limits.

Download the data JSON Schema. Validate response.data, not the whole envelope. A valid shape does not establish that every field or source record was returned.

Field inside dataTypeMeaning
_metaobject | nullOptional meta supplied by this operation. Null means unknown.
_meta.billingobject | nullOptional billing supplied by this operation. Null means unknown.
_meta.billing.chargednumber | nullOptional charged supplied by this operation. Null means unknown.
_meta.billing.formulastring | nullOptional formula supplied by this operation. Null means unknown.
_meta.billing.list_pricenumber | nullOptional list price supplied by this operation. Null means unknown.
_meta.intentobject | nullOptional intent supplied by this operation. Null means unknown.
_meta.intent.kindstring | nullOptional kind supplied by this operation. Null means unknown.
_meta.intent.termsarray | nullOptional terms supplied by this operation. Null means unknown.
_meta.intent.valuestring | nullOptional value supplied by this operation. Null means unknown.
_meta.mosaic_versionstring | nullOptional mosaic version supplied by this operation. Null means unknown.
_meta.queriesobject | nullOptional queries supplied by this operation. Null means unknown.
_meta.queries.blueskystring | nullOptional bluesky supplied by this operation. Null means unknown.
_meta.queries.githubstring | nullOptional github supplied by this operation. Null means unknown.
_meta.queries.hackernewsstring | nullOptional hackernews supplied by this operation. Null means unknown.
_meta.queries.redditstring | nullOptional reddit supplied by this operation. Null means unknown.
_meta.queries.youtubestring | nullOptional youtube supplied by this operation. Null means unknown.
_meta.rankingobject | nullOptional ranking supplied by this operation. Null means unknown.
_meta.ranking.formulastring | nullOptional formula supplied by this operation. Null means unknown.
_meta.ranking.min_relevancenumber | nullOptional min relevance supplied by this operation. Null means unknown.
_meta.ranking.source_weightsobject | nullOptional source weights supplied by this operation. Null means unknown.
_meta.ranking.source_weights.blueskynumber | nullOptional bluesky supplied by this operation. Null means unknown.
_meta.ranking.source_weights.githubnumber | nullOptional github supplied by this operation. Null means unknown.
_meta.ranking.source_weights.hackernewsnumber | nullOptional hackernews supplied by this operation. Null means unknown.
_meta.ranking.source_weights.redditnumber | nullOptional reddit supplied by this operation. Null means unknown.
_meta.ranking.source_weights.youtubenumber | nullOptional youtube supplied by this operation. Null means unknown.
_meta.timingsobject | nullOptional timings supplied by this operation. Null means unknown.
_meta.timings.total_msnumber | nullOptional total ms supplied by this operation. Null means unknown.
_warningsarray | nullOptional warnings supplied by this operation. Null means unknown.
clustersarray | nullOptional clusters supplied by this operation. Null means unknown.
clusters[].item_indicesarray | nullOptional item indices supplied by this operation. Null means unknown.
clusters[].labelstring | nullOptional label supplied by this operation. Null means unknown.
clusters[].sizenumber | nullOptional size supplied by this operation. Null means unknown.
clusters[].sourcesarray | nullOptional sources supplied by this operation. Null means unknown.
countnumber | nullNumber of records in this response, not lifetime or total matches.
divergenceobject | nullOptional divergence supplied by this operation. Null means unknown.
divergence.notesarray | nullOptional notes supplied by this operation. Null means unknown.
divergence.notes[].detailstring | nullOptional detail supplied by this operation. Null means unknown.
divergence.notes[].formulastring | nullOptional formula supplied by this operation. Null means unknown.
divergence.notes[].kindstring | nullOptional kind supplied by this operation. Null means unknown.
divergence.per_sourcearray | nullOptional per source supplied by this operation. Null means unknown.
divergence.per_source[].itemsnumber | nullReturned records. Source coverage and completeness vary.
divergence.per_source[].median_relevancenumber | nullOptional median relevance supplied by this operation. Null means unknown.
divergence.per_source[].newest_atstring | nullOptional newest at supplied by this operation. Null means unknown.
divergence.per_source[].sourcestring | nullOptional source supplied by this operation. Null means unknown.
divergence.per_source[].top_engagementnumber | nullOptional top engagement supplied by this operation. Null means unknown.
dropped_below_floornumber | nullOptional dropped below floor supplied by this operation. Null means unknown.
itemsarray | nullReturned records. Source coverage and completeness vary.
items[].also_seen_onarray | nullOptional also seen on supplied by this operation. Null means unknown.
items[].authorPublic author information supplied with this record.
items[].author_associationstring | nullOptional author association supplied by this operation. Null means unknown.
items[].bodystring | nullOptional body supplied by this operation. Null means unknown.
items[].cidstring | nullOptional cid supplied by this operation. Null means unknown.
items[].closed_atstring | nullOptional closed at supplied by this operation. Null means unknown.
items[].commentsnumber | nullOptional comments supplied by this operation. Null means unknown.
items[].comments_countnumber | nullOptional comments count supplied by this operation. Null means unknown.
items[].confidenceobject | nullOptional confidence supplied by this operation. Null means unknown.
items[].confidence.reasonsarray | nullOptional reasons supplied by this operation. Null means unknown.
items[].confidence.scorenumber | nullOptional score supplied by this operation. Null means unknown.
items[].created_atstring | nullSource creation time, not the API retrieval time.
items[].embed_typestring | nullOptional embed type supplied by this operation. Null means unknown.
items[].hn_urlstring | nullOptional hn url supplied by this operation. Null means unknown.
items[].idSource identifier. Preserve the supplied type and exact value.
items[].indexed_atstring | nullOptional indexed at supplied by this operation. Null means unknown.
items[].is_pull_requestboolean | nullOptional is pull request supplied by this operation. Null means unknown.
items[].is_replyboolean | nullOptional is reply supplied by this operation. Null means unknown.
items[].labelsarray | nullOptional labels supplied by this operation. Null means unknown.
items[].langsarray | nullOptional langs supplied by this operation. Null means unknown.
items[].likesnumber | nullOptional likes supplied by this operation. Null means unknown.
items[].numbernumber | nullOptional number supplied by this operation. Null means unknown.
items[].pointsnumber | nullOptional points supplied by this operation. Null means unknown.
items[].quotesnumber | nullOptional quotes supplied by this operation. Null means unknown.
items[].reactionsnumber | nullOptional reactions supplied by this operation. Null means unknown.
items[].repliesnumber | nullOptional replies supplied by this operation. Null means unknown.
items[].repostsnumber | nullOptional reposts supplied by this operation. Null means unknown.
items[].rkeystring | nullOptional rkey supplied by this operation. Null means unknown.
items[].sourcestring | nullOptional source supplied by this operation. Null means unknown.
items[].statestring | nullOptional state supplied by this operation. Null means unknown.
items[].story_idstring | nullOptional story id supplied by this operation. Null means unknown.
items[].textstring | nullSource text when supplied.
items[].titlestring | nullSource title when supplied.
items[].typestring | nullOptional type supplied by this operation. Null means unknown.
items[].updated_atstring | nullOptional updated at supplied by this operation. Null means unknown.
items[].urlstring | nullOriginal source URL when supplied.
outcomestring | nullOptional outcome supplied by this operation. Null means unknown.
querystring | nullOptional query supplied by this operation. Null means unknown.
sourcesarray | nullOptional sources supplied by this operation. Null means unknown.
sources[].errorstring | nullOptional error supplied by this operation. Null means unknown.
sources[].items_foundnumber | nullOptional items found supplied by this operation. Null means unknown.
sources[].items_keptnumber | nullOptional items kept supplied by this operation. Null means unknown.
sources[].latency_msnumber | nullOptional latency ms supplied by this operation. Null means unknown.
sources[].reasonstring | nullOptional reason supplied by this operation. Null means unknown.
sources[].served_bystring | nullOptional served by supplied by this operation. Null means unknown.
sources[].sourcestring | nullOptional source supplied by this operation. Null means unknown.
sources[].statusstring | nullOptional status supplied by this operation. Null means unknown.
sources_attemptednumber | nullOptional sources attempted supplied by this operation. Null means unknown.
sources_searchednumber | nullOptional sources searched supplied by this operation. Null means unknown.

Optional fields reviewed from preserved successful responses. Additive fields and source variations remain allowed; validate the fields your workflow requires.

The example is invented and illustrates types only; zero and empty values are not claims about a real result.

Failures use the typed error envelope. A confirmed uncharged or refunded failure reports zero; a pending reconciliation can report an unknown charge. Read credits_used and error.details.billing_status, and keep request_id for recovery. Response contract · Error reference

First call in under a minute

150 free credits and a ready-made key the moment you sign up. No card.