Short answer: Google Sheets can read RSS and Atom feeds with the built-in IMPORTFEED function, for example =IMPORTFEED("https://example.com/feed/", "items", TRUE, 20), which returns the latest 20 items with headers. It is ideal for quick content trackers, curation shortlists and simple dashboards. Its limits are that it only shows what the feed currently contains, refreshes on Google’s schedule rather than instantly, and does not keep history, so for a permanent log you need a snapshot script or an automation platform that appends rows.
Why put feeds in a spreadsheet?
Feed readers are great for reading. Spreadsheets are great for working with information: sorting, filtering, adding notes, assigning owners and sharing with colleagues who will never install a feed reader. Pulling feeds into Google Sheets bridges the two.
Typical uses include:
- Content curation shortlists: collect items from several sources, then mark the ones to include in a newsletter.
- Editorial logs: a live list of everything your own site has published recently, with dates and links.
- Competitor and market tracking: a shared sheet where the team sees what competitors published this month.
- Simple dashboards: counts of new items per source, charts of publishing frequency.
- Inputs for other automations: many tools can read a Google Sheet as a data source.
It is also one of the fastest ways to inspect a feed. Paste a URL into the formula, and you see immediately whether titles, dates and summaries are clean.
How IMPORTFEED works
The syntax is IMPORTFEED(url, [query], [headers], [num_items]):
- url is the address of the RSS or Atom feed, in quotes or as a cell reference.
- query decides what to return.
"items"returns the items with all standard fields."items title","items url","items created","items summary"and"items author"return one field."feed title"and similar return information about the feed itself. - headers is
TRUEto add a header row. - num_items limits how many items are returned.
Google’s own Sheets help documentation describes the function and its options in full. Because it is a standard function, it works in shared sheets and needs no add-ons or scripts.
Step by step: a multi-source tracker
- Create a “Sources” tab with one feed URL per row in column A and a short source name in column B.
- Create a tab per source, or a section per source on one tab, with a formula such as
=IMPORTFEED(Sources!A2, "items", TRUE, 15). - Add a combined view. Use array formulas to stack the ranges from each source into one list, adding the source name as a column. For example, a
QUERYorVSTACKformula can combine the ranges. - Sort by date with
SORTon the date column, newest first. - Filter by keyword with
FILTERandREGEXMATCH, for example keeping rows whose title contains any of your topic words. - Add a manual column such as “Use in newsletter?” Be careful: manual notes next to imported data can end up next to the wrong item when the feed updates and rows shift. Keep manual notes on a separate tab keyed by the item URL, and look them up with
XLOOKUPorVLOOKUP.
Refresh behaviour and limits
IMPORTFEED is convenient, but it is not a real-time system. Understanding its behaviour prevents surprises.
- Refresh timing. External data functions in Sheets update periodically on Google’s schedule, typically around once an hour, and also when the formula is edited. You cannot set a precise interval.
- No history. The function shows what the feed contains now. When an item drops out of the feed, it disappears from your sheet. If the source keeps only ten items, your sheet never shows more than ten.
- Errors when feeds fail. If the feed is temporarily unavailable, blocked or malformed, the cell shows an error such as “Could not fetch url” and dependent formulas break until the next successful fetch.
- Some sites block it. Requests come from Google’s servers, and some sites block or rate-limit them.
- Performance. Many import formulas in one spreadsheet slow it down and increase the chance of fetch errors. Keep the number of sources per sheet reasonable.
Keeping a permanent log
For an archive of every item ever published by a source, IMPORTFEED alone is not enough. There are two common solutions.
Apps Script snapshot
A short Google Apps Script with a time-driven trigger can fetch the feed or read the IMPORTFEED range, compare item URLs with those already stored on a “Log” tab and append only new ones with a timestamp. This keeps a permanent history and costs nothing beyond a little setup time. It needs someone comfortable with basic JavaScript.
Automation platform
Zapier, Make, n8n and similar tools can watch a feed and add a row to a Google Sheet for every new item. This is the no-code way to build a log, and it records items as they appear rather than relying on the feed’s current contents. Costs grow with the number of items.
Whichever you use, store the item URL as the unique key, so the same item is never logged twice.
Practical examples
| Use case | Approach | Why |
|---|---|---|
| Quick look at a feed’s quality | IMPORTFEED only | Instant, no setup |
| Weekly curation shortlist | IMPORTFEED + FILTER, notes on a separate tab | Live list, easy to share |
| Complete content archive | Apps Script or automation platform appending rows | Keeps items after they leave the feed |
| Team competitor tracker | Automation platform appending rows, sheet shared | Reliable history, no formula errors |
Related import functions and when to use them
IMPORTFEED has three siblings in Google Sheets, and people often reach for them when a site has no feed. Each has a place, but also clear limits.
- IMPORTHTML reads a table or list from a web page. It works when the content you need is in a clean HTML table or list, and breaks as soon as the page layout changes or the content is loaded by JavaScript.
- IMPORTXML extracts data from a page with XPath queries. It is powerful for developers, but fragile: any change in the page’s structure breaks the query, and the results need careful cleaning.
- IMPORTDATA loads CSV or TSV files from a URL. It is useful for data exports, such as a product CSV, rather than for articles.
For article lists, a proper feed is almost always more robust than IMPORTHTML or IMPORTXML, because feeds are designed to be read by machines and change far less often than page layouts. If you find yourself writing XPath to extract headlines from a news page, it is usually a sign that you should create a feed from that page instead and import the feed.
All four functions share the same refresh behaviour and are subject to the same blocking and timeout issues, so the troubleshooting steps below apply to all of them.
Making the sources behave
A spreadsheet tracker is only as reliable as its feeds. Three problems come up constantly: sources without a feed, sources whose feed includes far more than you need, and the same story appearing from several sources.
Feeds addresses all three before the data reaches your sheet. It creates an RSS feed from any page that lists articles, merges several sources into one feed, keeps or drops items by keyword and removes duplicates automatically. Instead of a dozen IMPORTFEED formulas and a complex combining formula, you can point one IMPORTFEED at one merged, filtered feed. The feed refreshes by itself on the service side too. You can try it on one website for free; the pricing page covers merged feeds and limits.
Troubleshooting IMPORTFEED errors
- “Could not fetch url”: open the feed URL in a browser. If it works there, the site may be blocking Google’s servers or the fetch timed out; try again later or use another source.
- “Imported content is empty”: the URL is a web page, not a feed, or the feed has no items. Check that the address returns XML.
- Parse errors: the feed contains invalid XML. A feed validator will point to the problem.
- Stale data: force a refresh by editing the formula slightly, for example changing
num_items, then changing it back. - Misaligned notes: manual notes were typed next to imported rows. Move them to a separate tab keyed by URL.
Related reading
- How to Automate Content Curation Without Losing Quality
- How to Build an Automated Daily News Digest from Feeds
- How to Merge Multiple RSS Feeds into One Clean Feed
- Zapier vs Make vs IFTTT vs n8n for RSS Automation
The bottom line
IMPORTFEED is the quickest way to bring RSS into Google Sheets for trackers, shortlists and quick feed inspections. Combine sources with array formulas, filter with REGEXMATCH and keep manual notes on a separate tab keyed by URL. When you need a permanent history or reliability, add an Apps Script snapshot or an automation platform that appends rows, and start from clean, merged feeds.
الأسئلة الشائعة
Does IMPORTFEED work with Atom feeds?
Yes. IMPORTFEED reads both RSS and Atom feeds and returns the same kinds of fields, such as title, URL, date and summary.
How often does IMPORTFEED refresh?
Google refreshes external data functions periodically, typically around once an hour, and when the formula changes. There is no setting for an exact refresh interval.
Can IMPORTFEED keep old items after they leave the feed?
No. It only shows the feed’s current contents. To keep history, append new items to a log with Apps Script or an automation platform.
Can I use IMPORTFEED on a website without RSS?
Not directly, because it needs a feed URL. Create a feed from the page that lists the site’s articles first, then import that feed.
Why does IMPORTFEED show an error for a feed that works in my browser?
The site may block or rate-limit requests from Google’s servers, or the request timed out. Waiting and retrying sometimes helps; otherwise use a different feed URL for the same content.


