Skip to content

Custom HTTP Requests

Some websites require custom HTTP headers, authentication, or specific request configurations to access their content. html2rss makes it easy to customize your requests to handle these scenarios.

You might need custom HTTP requests when:

  • APIs require authentication (Bearer tokens, API keys)
  • Websites block default user agents (need to appear as a real browser)
  • Content is behind login (session cookies, authorization headers)
  • Rate limiting (custom headers to identify your requests)
  • Content negotiation (specific Accept headers for different formats)

Add a headers section to your feed configuration:

headers:
User-Agent: "Mozilla/5.0 (compatible; html2rss/1.0)"
Authorization: "Bearer YOUR_API_TOKEN"
Accept: "application/json"
channel:
url: https://api.example.com/posts
selectors:
items:
selector: ".post"
title:
selector: "h2"

Many APIs require authentication tokens:

headers:
Authorization: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
X-API-Key: "your-api-key-here"

Some websites block requests that don’t look like real browsers:

headers:
User-Agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
Accept-Language: "en-US,en;q=0.5"
Accept-Encoding: "gzip, deflate"

Request specific content types:

headers:
Accept: "application/json" # For JSON APIs
Accept: "text/html" # For HTML content
Accept: "application/rss+xml" # For RSS feeds

Some APIs require specific headers:

headers:
X-Requested-With: "XMLHttpRequest"
X-Custom-Header: "your-value"
Content-Type: "application/json"

You can use dynamic parameters in headers for runtime values:

headers:
Authorization: "Bearer {{api_token}}"
X-User-ID: "{{user_id}}"

See our Dynamic Parameters guide for more details.

Test your configuration to ensure headers work correctly:

Terminal window
# Test with curl first
curl -H "Authorization: Bearer YOUR_TOKEN" https://api.example.com/posts
# Then test with html2rss
html2rss feed your-config.yml
  • 401 Unauthorized: Check your authentication headers
  • 403 Forbidden: Verify API keys and permissions
  • 429 Too Many Requests: Add rate limiting or different user agents
  • Empty responses: Some APIs require specific Accept headers
  1. Use browser developer tools to see what headers successful requests use
  2. Test with curl before configuring html2rss
  3. Check API documentation for required headers
  4. Enable debug logging to see what headers are being sent
headers:
Authorization: "token YOUR_GITHUB_TOKEN"
Accept: "application/vnd.github.v3+json"
User-Agent: "html2rss/1.0"
channel:
url: https://api.github.com/repos/owner/repo/issues
headers:
User-Agent: "html2rss/1.0 by your-username"
Accept: "application/json"
channel:
url: https://www.reddit.com/r/programming.json