Skip to main content

Feed Seeker

It slant rhymes with “heat seeker”

Build Status Coverage

A library for finding atom, rss, rdf, and xml feeds from web pages. Produced at the mediacloud project. An incremental improvement over feedfinder2, which was itself based on feedfinder, written by Mark Pilgrim, and maintained by Aaron Swartz until his untimely death.

Installation

The library is available on PyPI:

pip install feed_seeker

The library requires Python 3.5+.

Quickstart

By default, the library uses requests to grab html and inspect it and find the most likely feed url:

from feed_seeker import find_feed_url

>>> find_feed_url('https://github.com/mitmedialab/feed_seeker')
'https://github.com/mitmedialab/feed_seeker/commits/master.atom'

To do a more thorough search, use generate_feed_urls, which returns more likely candidates first.

from feed_seeker import generate_feed_urls

>>> for url in generate_feed_urls('https://xkcd.com'):
...     print(url)
...
https://xkcd.com/atom.xml
https://xkcd.com/rss.xml

For the most thorough search, add a spider argument to do depth-first spidering of urls on the same hostname. Note the below call takes nearly four minutes, compared to 0.5 seconds for find_feed_url.

>>> for url in generate_feed_urls('https://github.com/mitmedialab/feed_seeker', spider=1):
...     print(url)
...
https://github.com/mitmedialab/feed_seeker/commits/master.atom,
https://github.com/mitmedialab/feed_seeker/commits/95cf320796c487df8b70f9c42281d8f26452cc31.atom,
https://github.com/mitmedialab/feed_seeker/commits/3e93490cb91f7652325c2fe41ef29a5be4558d6a.atom,
https://github.com/mitmedialab/feed_seeker/commits/659311b8853c4c4a67e3b4bc67a78461d825a064.atom,
https://github.com/mitmedialab/feed_seeker/commits/a8f7b86eac2cedd9209ac5d2ddcceb293d2404c9.atom,
https://github.com/index.atom,
https://github.com/articles.atom,
https://github.com/dfm/feedfinder2/commits/master.atom,
https://github.com/blog.atom,
https://github.com/blog/all.atom,
https://github.com/blog/broadcasts.atom,
https://github.com/ColCarroll.atom

New Feedly Support

Search Feedly to find relevant feeds to a specific site:

from feed_seeker import find_feedly_feeds

>>> for url in find_feedly_feeds('https://www.nytimes.com'):
...     print(url)
...

http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml
http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml
http://www.nytimes.com/services/xml/rss/nyt/Science.xml
http://www.nytimes.com/services/xml/rss/nyt/Travel.xml
http://www.nytimes.com/services/xml/rss/nyt/Technology.xml
http://www.nytimes.com/services/xml/rss/nyt/Business.xml

In a hurry?

If you have a long list of urls, you might want to set a timeout with max_time:

>>> for url in ('https://httpstat.us/200?sleep=5000', 'https://github.com/mitmedialab/feed_seeker'):
   ...     try:
   ...         print('found feed:\t{}'.format(find_feed_url(url, max_time=3)))
   ...     except TimeoutError:
   ...         print('skipping {}'.format(url))
   skipping https://httpstat.us/200?sleep=5000
   found feed:  https://github.com/mitmedialab/feed_seeker/commits/master.atom

Differences with feedfinder2

The biggest difference is that all functions are implemented as generators, and are evaluated lazily. Candidate feed links are actually accessed and inspected to determine whether or not they are a feed, which can be quite time consuming. We expose a function to find the most likely feed link, and another to lazily generate links in rough order from most prominent to least.

There are also a few more heuristics based on our experience at mediacloud.

Metadata

Release files for feed-seeker 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for feed-seeker 2.0.0
File Size Uploaded
feed_seeker-2.0.0.tar.gz 10.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for feed-seeker 2.0.0
File Interpreter ABI Platform
feed_seeker-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.7 kB

Release files / feed_seeker-2.0.0.tar.gz

Download URL feed_seeker-2.0.0.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e03c9a33cb820aee63d31b1b85932205bf9b88ce8fe76e1ab7ee0322721153b8
BLAKE2b-256 checksum
How to use checksums
1e05963babd2a6e51f3df536e13a5a5a96c4ce829bcb30064bf1011b3bab6919
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / feed_seeker-2.0.0-py3-none-any.whl

Download URL feed_seeker-2.0.0-py3-none-any.whl
Size 10.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e02cc48c2931d6ae0aafdbe05459ce5c57a789399b8faa3f0c3c27b0b9f41a35
BLAKE2b-256 checksum
How to use checksums
4baa9cfb6cfd2087e34effb789bc0e9a3810c35213390601470e80e2703f3ddb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page