> ## Documentation Index
> Fetch the complete documentation index at: https://docs.factagora.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Crawl

> Fetch a URL and get its main content back as clean Markdown.

Fetch a page and get the article body back as Markdown, with the boilerplate stripped out. Useful when you want to run your own processing over a page before sending anything to the other APIs.

By default you also get the title, author, published date, and description. Pass a `prompt` to extract something specific instead.

## Request Body

<ParamField body="url" type="string" required>
  URL to crawl.
</ParamField>

<ParamField body="prompt" type="string">
  Custom extraction instruction. When provided, the response returns plain text matching your instruction and the metadata fields come back as `null`.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.factagora.com/api/v1/crawl" \
    -H "Authorization: Bearer fa_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{"url": "https://www.reuters.com/business/example-article"}'
  ```
</RequestExample>

## Response

<ResponseField name="url" type="string">
  The URL that was crawled.
</ResponseField>

<ResponseField name="title" type="string">
  Page title. `null` when `prompt` was provided.
</ResponseField>

<ResponseField name="markdown" type="string">
  The extracted content. Markdown by default, or plain text matching your instruction when `prompt` was provided.
</ResponseField>

<ResponseField name="publishedAt" type="string">
  Published date in ISO 8601. `null` when `prompt` was provided, or when the page has no date.
</ResponseField>

<ResponseField name="author" type="string">
  Author. `null` when `prompt` was provided, or when the page has no author.
</ResponseField>

<ResponseField name="description" type="string">
  Page description. `null` when `prompt` was provided.
</ResponseField>

<ResponseField name="fetchedAt" type="string">
  When the page was fetched, in ISO 8601.
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "url": "https://www.reuters.com/business/example-article",
    "title": "ECB raises rates by 25 basis points",
    "markdown": "The European Central Bank raised interest rates by 25 basis points on Thursday...",
    "publishedAt": "2026-06-15T08:00:00Z",
    "author": "Jane Editor",
    "description": "The ECB cited persistent core inflation in the eurozone.",
    "fetchedAt": "2026-06-15T09:12:04.221Z"
  }
  ```
</ResponseExample>

## Extracting one section

Use `prompt` when you only want part of the page. The metadata fields come back `null` and `markdown` holds plain text.

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.factagora.com/api/v1/crawl" \
    -H "Authorization: Bearer fa_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{
      "url": "https://example.com/pricing",
      "prompt": "Extract only the FAQ section."
    }'
  ```
</RequestExample>
