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

# RSS

> Sync RSS and Atom feed entries into a Mixpeek bucket, one object per entry.

<Note>
  Each feed entry becomes a bucket object. Mixpeek polls the feed URL on the interval you set.
</Note>

## Overview

Point a sync at a feed URL. Mixpeek reads the feed, creates one object per entry, and skips entries it has already seen.

Both RSS and Atom are supported.

## Prerequisites

* A reachable feed URL.
* HTTP headers for the feed, if it is private.

## Configuration

### Connection-level fields

| Field                 | Required | Description                                                 |
| --------------------- | -------- | ----------------------------------------------------------- |
| `credentials.headers` | No       | HTTP headers for private feeds, for example `Authorization` |
| `user_agent`          | No       | Defaults to `Mixpeek RSS Sync/1.0`                          |
| `request_timeout`     | No       | Seconds, defaults to `30`                                   |

### Sync-level fields

| Field                      | Required | Description       |
| -------------------------- | -------- | ----------------- |
| `source_path`              | Yes      | The feed URL      |
| `polling_interval_seconds` | No       | Defaults to `300` |
| `batch_size`               | No       | Defaults to `50`  |

<Tip>
  A public feed needs no credentials. Create the connection with an empty `provider_config` and put the URL on the sync.
</Tip>

## Setup

<Steps>
  <Step title="Create the storage connection">
    <CodeGroup>
      ```python Python theme={null}
      from mixpeek import Mixpeek

      client = Mixpeek(api_key="your-mixpeek-api-key")

      connection = client.organizations.connections.create(
          name="Industry News Feeds",
          provider_type="rss",
          provider_config={},
      )
      print(f"Created connection: {connection['connection_id']}")
      ```

      ```javascript JavaScript theme={null}
      import { Mixpeek } from 'mixpeek-sdk'

      const client = new Mixpeek({ apiKey: 'your-mixpeek-api-key' })

      const connection = await client.organizations.connections.create({
        name: 'Industry News Feeds',
        provider_type: 'rss',
        provider_config: {},
      })
      console.log('Created connection:', connection.connection_id)
      ```

      ```bash cURL theme={null}
      curl -X POST https://api.mixpeek.com/v1/organizations/connections \
        -H "Authorization: Bearer YOUR_MIXPEEK_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "name": "Industry News Feeds",
          "provider_type": "rss",
          "provider_config": {}
        }'
      ```
    </CodeGroup>

    For a private feed, pass the headers instead:

    ```json theme={null}
    {
      "credentials": {
        "type": "http_header",
        "headers": {"Authorization": "Bearer your-feed-token"}
      }
    }
    ```
  </Step>

  <Step title="Create a sync per feed">
    One connection can serve many feeds. Create one sync per feed URL.

    <CodeGroup>
      ```python Python theme={null}
      sync = client.buckets.syncs.create(
          bucket_id="bkt_your_bucket_id",
          connection_id=connection["connection_id"],
          source_path="https://example.com/blog/feed.xml",
          polling_interval_seconds=3600,
      )
      print(f"Sync created: {sync['sync_config_id']}")
      ```

      ```bash cURL theme={null}
      curl -X POST https://api.mixpeek.com/v1/buckets/bkt_your_bucket_id/syncs \
        -H "Authorization: Bearer YOUR_MIXPEEK_API_KEY" \
        -H "X-Namespace: ns_your_namespace_id" \
        -H "Content-Type: application/json" \
        -d '{
          "connection_id": "conn_your_connection_id",
          "source_path": "https://example.com/blog/feed.xml",
          "polling_interval_seconds": 3600
        }'
      ```
    </CodeGroup>
  </Step>
</Steps>

## Related

<CardGroup cols={2}>
  <Card title="HTTP API" icon="code" href="/docs/integrations/web-data/http-api">
    Sync items from any JSON REST endpoint.
  </Card>

  <Card title="BrightData" icon="globe" href="/docs/integrations/web-data/brightdata">
    Collect web datasets and scraper results.
  </Card>
</CardGroup>
