# Full-Text RSS API
> Turn any web page into clean, readable article text and turn any RSS or Atom feed into a structured, full-text feed. Extract the main article from a URL (title, author, published date, source, lead image, reading time, word count, plain text and cleaned HTML) using readability extraction, parse a feed into its entries, and — the signature feature — produce a full-text feed where every entry carries the complete extracted article instead of just the summary. Only public http/https URLs are accepted and private or internal hosts are blocked. Every endpoint accepts input via the query string or the request body and returns lean JSON. Ideal for read-it-later apps and newsreaders, newsletters and digests, summarisers and RAG pipelines, content monitoring and archiving.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/fulltextrss-api/..."
```

## Pricing
- **Free** (Free) — 8,000 calls/Mo, 2 req/s
- **Basic** ($9/Mo) — 90,000 calls/Mo, 8 req/s
- **Pro** ($26/Mo) — 650,000 calls/Mo, 20 req/s
- **Mega** ($64/Mo) — 3,500,000 calls/Mo, 45 req/s

## Endpoints

### Full-Text RSS

#### `GET /v1/extract` — Extract readable article from a URL

**Parameters:**
- `url` (query, required, string) — Public article URL Example: `https://en.wikipedia.org/wiki/RSS`
- `text_only` (query, optional, string) — Omit content_html Example: `true`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/fulltextrss-api/v1/extract?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FRSS&text_only=true"
```

**Response:**
```json
{
    "data": {
        "url": "https://en.wikipedia.org/wiki/RSS",
        "text": "RSSFilename extension.rss, .xml\nInternet media typeapplication/rss+xml (registration not finished)[1]Developed byRSS Advisory BoardInitial releaseRSS 0.90 (Netscape), March 15, 1999; 27 years agoLatest releaseRSS 2.0 (version 2.0.11)March 30, 2009; 17 years ago \nType of formatWeb syndicationContainer forUpdates of a website and its related metadata (web feed)Extended fromXMLOpen format?YesWebsiterssboard.org/rss-specification\nRSS (RDF Site Summary or Really Simple Syndication)[2] is a web feed[3] that allows users and applications to access updates to websites in a standardized, computer-readable format. Subscribing to RSS feeds can allow a user to keep track of many different websites in a single news aggregator, which constantly monitors sites for new content, removing the need for the user to manually check them. News aggregators (or \"RSS readers\") can be built into a browser, installed on a desktop computer, or installed on a mobile device.[4]\n\nWebsites usually use RSS feeds to publish frequently updated information, such as blog entries, news headlines, episodes of audio and video series, or for distributing podcasts. An RSS document (called \"feed\", \"web feed\", or \"channel\") includes full or summarized text and metadata like publishing date and author's name. RSS formats are specified using a generic XML file.[4]\n\nAlthough RSS formats have evolved from as early as M
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/feed` — Parse an RSS/Atom feed

**Parameters:**
- `url` (query, required, string) — Feed URL Example: `https://feeds.bbci.co.uk/news/rss.xml`
- `limit` (query, optional, string) — Max entries 1..100 Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/fulltextrss-api/v1/feed?url=https%3A%2F%2Ffeeds.bbci.co.uk%2Fnews%2Frss.xml&limit=25"
```

**Response:**
```json
{
    "data": {
        "link": "https://www.bbc.co.uk/news",
        "count": 25,
        "title": "BBC News",
        "total": 34,
        "entries": [
            {
                "id": "https://www.bbc.com/sport/football/articles/clypr1lzxvno#0",
                "link": "https://www.bbc.com/sport/football/articles/clypr1lzxvno?at_medium=RSS&at_campaign=rss",
                "title": "Why crucial penalty miss was 'cruel blow' for Arsenal standout Gabriel",
                "published": "2026-05-30T22:23:31.000Z",
                "description": "Gabriel's first penalty for Arsenal ends in heartache as his shootout miss hands Paris St-Germain a second successive Champions League title."
            },
            {
                "id": "https://www.bbc.com/news/articles/c5y8wjvd1ypo#0",
                "link": "https://www.bbc.com/news/articles/c5y8wjvd1ypo?at_medium=RSS&at_campaign=rss",
                "title": "US, UK and Australia to develop underwater drone technology",
                "published": "2026-05-30T12:16:26.000Z",
                "description": "The technology, developed under the Aukus military pact, is aimed at protecting undersea cables and boosting naval defence."
            },
            {
                "id": "https://www.bbc.com/news/articles/cvgzyp93jq1o#0",
                "link": "https://www.bbc.com/news/articles/cvgzyp93jq1o?at_medium=RSS&at_campaign=rss",
                "title": "'No-one feels safe now': Residents of Romanian city hit by dr
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/fulltext` — Feed with full article text per entry

**Parameters:**
- `url` (query, required, string) — Feed URL Example: `https://feeds.bbci.co.uk/news/rss.xml`
- `limit` (query, optional, string) — Max entries 1..10 Example: `5`
- `text_only` (query, optional, string) — Omit content_html Example: `true`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/fulltextrss-api/v1/fulltext?url=https%3A%2F%2Ffeeds.bbci.co.uk%2Fnews%2Frss.xml&limit=5&text_only=true"
```

**Response:**
```json
{
    "data": {
        "link": "https://www.bbc.co.uk/news",
        "count": 5,
        "title": "BBC News",
        "entries": [
            {
                "id": "https://www.bbc.com/sport/football/articles/clypr1lzxvno#0",
                "link": "https://www.bbc.com/sport/football/articles/clypr1lzxvno?at_medium=RSS&at_campaign=rss",
                "title": "Why crucial penalty miss was 'cruel blow' for Arsenal standout Gabriel",
                "article": {
                    "url": "https://www.bbc.com/sport/football/articles/clypr1lzxvno",
                    "text": "The defining image of Arsenal's Champions League final defeat was Gabriel standing with his head in his hands as he was consoled by Paris St-Germain captain and Brazil team-mate Marquinhos.\nIt was a cruel end to the defender's first European final. His penalty, blasted over the crossbar, proved decisive as the Gunners suffered shootout heartbreak and PSG successfully defended their title.\nFor a player who has so often been Arsenal's difference-maker this season, it was not the contribution he would have envisaged before the club's first Champions League final since 2006.\nIt was the first penalty Gabriel had taken for Arsenal, with manager Mikel Arteta revealing the defender had \"prepared and trained for this moment\".\n\"He wanted to take it,\" Arteta said. \"Normally the penalty takers would be Bukayo [Saka], Martin [Odegaard] and Kai [Havertz]. But we knew if the game went to extra-time and pe
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/fulltextrss-api
OpenAPI spec: https://www.oanor.com/api/fulltextrss-api/openapi.json
