Submit URL to Brave
TL;DR
About
Brave Search runs its own index and has no webmaster console, so this form (on the search engine, not in the Brave browser) is how a site owner asks the crawler to fetch a URL. You send one address and get back the form's verdict. Acceptance only means the request was queued. Fast submissions can trigger a bot check that ends the run with an error (on the search pages, which seem to share the same per-IP limit, it appeared after about ten rapid requests), so wait 30 to 60 seconds when that happens. Say a docs team publishes 12 pages under /docs on a Monday. They submit the eight that matter most, the other four after lunch, and a few days later run the Brave search script on site:example.com/docs. Count a page as in only when that search returns operatorsApplied as true, because with too few matches the engine drops the site: filter and returns unrelated hits.
Input
url requiredThe absolute URL to submit for re-fetching, e.g. 'https://reduck.ai/pricing'. Brave validates it and rejects anything it doesn't parse as a URL (returned as accepted:false, not an error). One URL per call — the form takes exactly one.
Output
url requiredThe URL that was submitted, echoed back from the args.
detail requiredThe panel's explanatory line, verbatim ('Thank you for your submission.' / 'Please insert a valid URL.'). This is where Brave states WHY a submission was rejected. null when the panel has no detail row — kept nullable because only the success and invalid-URL variants have been observed.
heading requiredThe outcome panel's heading, verbatim as rendered ('Success' / 'Error'). Localized by Brave, so branch on `accepted` instead. Required and non-empty on purpose: Brave shows a 'Verifying you're a human being' step in the SAME panel before deciding, and that intermediate state has no heading — so a missing one means the script read the panel before the verdict existed, which must fail loudly rather than validate as a successful submission.
accepted requiredWhether Brave accepted the submission: true = the success panel, false = the error panel (e.g. a malformed URL). Read off the panel's own `error` class, not its wording, so it survives localization. Acceptance is a queued re-fetch request only — it carries no promise that the page gets crawled, indexed or ranked.
Example output
Shape only: placeholder values generated from the output schema, not a real run.
{
"url": "https://example.com/item/123",
"detail": "…",
"heading": "…",
"accepted": true
}