API Reference

One endpoint.
Any website.

Send any URL and get back clean structured JSON ready for your LLM. Everything in between is handled for you.

Simple by design

Three steps between a raw URL and clean machine-readable context.

Step 01

Send a URL

POST any webpage URL to /extract with your API key. No SDK required, no configuration. A single HTTP request is all it takes.

Step 02

We handle the rest

Neureil's extraction pipeline processes the page automatically, handling JavaScript rendering, bot detection, and anything else standing between you and the content.

Step 03

Receive clean context

Structured JSON with title, summary, headings, key points, code examples, pricing, author and full content. Same shape every time.

POST /extract

Send a JSON body with a url field and your API key in the Authorization header. The endpoint validates the URL and returns structured JSON.

Base URL is https://api.neureil.com
Method is POST with Content-Type application/json
Auth header is Authorization: Bearer YOUR_API_KEY
Supports http and https URLs only
example.js
const res = await fetch(
  'https://api.neureil.com/extract',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer YOUR_API_KEY'
    },
    body: JSON.stringify({
      url: 'https://techcrunch.com/some-article'
    })
  }
);

const data = await res.json();
curl
curl -X POST https://api.neureil.com/extract \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"url":"https://example.com"}'

What comes back

Every successful extraction returns the same structured shape. Nine named fields in the same order every time.

response.json
{
  "title":          "Article Title",
  "summary":        "Meta description or first paragraph...",
  "headings":       ["Section One", "Section Two"],
  "key_points":     ["First key point", "Second key point"],
  "code_examples":  [{ "language": "js", "code": "..." }],
  "pricing":        ["$29/mo", "$99/mo"],
  "author":         "Jane Smith",
  "published_date": "2024-11-15T09:00:00Z",
  "content":        "Full clean page text...",
  "metadata": {
    "word_count": 842
  }
}

All nine fields

Every field is always present in the response. Nullable fields return null when not found, never missing or undefined.

title string Page title from Open Graph og:title, falls back to the HTML title element. Whitespace normalized.
summary string | null Meta description if present, otherwise the first paragraph over 80 characters.
headings string[] All h1 through h4 headings found on the page, deduplicated and cleaned.
key_points string[] | null List items extracted from content areas. Up to 15 items, each between 15 and 250 characters.
code_examples array | null Code blocks from pre and code tags. Each item has a language string and a code string.
pricing string[] | null Price strings matched by pattern. Examples include $29/mo and $499/year.
author string | null Byline from meta tags, rel author, itemprop author, or author class elements.
published_date string | null ISO 8601 publish date from Open Graph tags or time datetime elements.
content string Full page text with noise removed and whitespace normalized.
metadata object Contains word_count — the total word count of the extracted content.

Predictable errors

Every error returns a JSON body with a descriptive error field. The HTTP status tells you the category.

Status When it happens
400 Missing or invalid URL, non-http/https protocol, or unresolvable domain.
401 Missing or invalid API key in the Authorization header.
429 Monthly extraction limit reached for your plan. Upgrade or wait for your monthly reset.
502 The target site returned a non-2xx HTTP response.
504 The request to the target URL timed out.
500 Unexpected internal error. Contact us if this happens consistently.
Get in touch

Let's talk.

Have a question about the API? Evaluating Neureil for your stack? We read every message.

Send a message
or find us at [email protected]