# Universal Feed Parser

Parse RSS and Atom feeds in Python. 3000 unit tests. Open source.

- Download ·
- Documentation ·
- Unit tests ·
- Report a bug

## Feed Type and Version Detection

###

Universal Feed Parser attempts to autodetect the type and version of the feeds it parses. There are many subtle and not-so-subtle differences between the different versions of RSS, and applications may choose to handle different feed types in different ways.

### Example: Accessing feed version

    >>> d = feedparser.parse('http://feedparser.org/docs/examples/atom10.xml')
    >>> d.version
    'atom10'
    >>> d = feedparser.parse('http://feedparser.org/docs/examples/atom03.xml')
    >>> d.version
    'atom03'
    >>> d = feedparser.parse('http://feedparser.org/docs/examples/rss20.xml')
    >>> d.version
    'rss20'
    >>> d = feedparser.parse('http://feedparser.org/docs/examples/rss20dc.xml')
    >>> d.version
    'rss20'
    >>> d = feedparser.parse('http://feedparser.org/docs/examples/rss10.rdf')
    >>> d.version
    'rss10'

Here is the complete list of known feed types and versions that may be returned in `version`:

`rss090`
  RSS 0.90
`rss091n`
  Netscape RSS 0.91
`rss091u`
  Userland RSS 0.91 (differences from Netscape RSS 0.91)
`rss10`
  RSS 1.0
`rss092`
  RSS 0.92
`rss093`
  RSS 0.93
`rss094`
  RSS 0.94 (no accurate specification is known to exist)
`rss20`
  RSS 2.0
`rss`
  RSS (unknown or unrecognized version)
`atom01`
  Atom 0.1
`atom02`
  Atom 0.2
`atom03`
  Atom 0.3
`atom10`
  Atom 1.0
`atom`
  Atom (unknown or unrecognized version)
`cdf`
  CDF
`hotrss`
  Hot RSS

If the feed type is completely unknown, `version` will be an empty string.

← Relative Link Resolution
Character Encoding Detection →