The technique of Web lookups in Excel I described yesterday is very versatile. I will be running through some of the practical uses it can be put to over the next few days

TO generalise things beyond just getting the Amazon price, I created a user-defined function called XPATH. It takes two parameters:

URL of the XML feed to read
Search XPath list string (separated by spaces)

This function can be used to extract information out of any XML file on the Web and get it out as a table. For example, if you wanted to watch the Top 10 movies on the IMDb Top 250, and were looking for torrents, an RSS feed is available from mininova. The URL http://www.mininova.org/rss/movie_name/4 gives you an RSS file matching all movies with “movie_name”. From this, we need to extract the and <item><link> elements. That’s represented by “//item title link” on my search string.</p> <p><a href="/blog/assets/flickr-mininova-rss-feed-in-excel_482789516_o-png.webp"><img alt="Mininova RSS feed in Excel" loading="lazy" src="/blog/assets/flickr-mininova-rss-feed-in-excel_482789516_o-png.webp"></a></p> <p>The formula becomes <code>XPath2( "http://www.mininova.org/rss/"&A2&"/4", "//item title link")</code>. The result is a 2-dimensional array returning individual items in rows, and the columns are title and link. Pulling it all together, you can get the sheet above.</p> <p>All of this could be done using a command-line program. Excel has one huge advantage though. It’s one of the most powerful user-interfaces. Increasingly, I’m beginning to rely on just two user interfaces for almost any task. One is the browser, and the other is Excel. With Excel, I could have a sheet that has my <a href="/blog/wishlist-for-movies/">movie wishlist</a> (which changes often), and add check to see if the torrent exists. Every time I add a bunch of movies to the wishlist, it’s just a matter of copying the formula down. No need to visit a torrent search engine and typing each movie in, one by one.</p> <p>Another example. Someone suggests 10 movies to watch. I’d rather watch the ones with a higher IMDb rating. Again, enter the Web lookup. Type in the movie names. Use a function like this to look up the rating on IMDb, and sort by the rating.</p> <p>The possibilities are endless.</p> </div> <section class="related-posts"> <h2>Related</h2> <ul> <li> <a href="/blog/scraping-rss-feeds-using-xpath/">Scraping RSS feeds using XPath</a> <time datetime="2007-12-17T12:00:00Z">Mon, 17 Dec 2007</time><p>I built a server that uses XPath to convert static web pages like the IMDb Top 250 into custom RSS feeds. I demonstrate how to target specific HTML elements to track updates when official feeds aren't provided.</p> </li> <li> <a href="/blog/web-lookup-using-google-spreadsheets/">Web lookup using Google Spreadsheets</a> <time datetime="2007-12-31T12:00:00Z">Mon, 31 Dec 2007</time><p>I show how I use Google Spreadsheets' importXML and importFeed functions to automate web lookups. I built a tool that scrapes IMDb’s top movies, finds related torrents, and publishes the combined results as a custom RSS feed.</p> </li> <li> <a href="/blog/web-lookup-using-excel/">Web lookup using Excel</a> <time datetime="2007-05-03T12:00:00Z">Thu, 3 May 2007</time><p>I built a VBA user-defined function to fetch live Amazon prices directly into Excel. By querying Amazon's XML web services via MSXML and parsing with XPath, I automated gadget price comparisons to avoid manual data entry.</p> </li> <li> <a href="/blog/user-defined-functions-in-excel/">User-defined functions in Excel</a> <time datetime="2006-09-01T12:00:00Z">Fri, 1 Sep 2006</time><p>I show you how to create custom Excel functions using VBA to simplify complex tasks. I use these to handle errors gracefully, extract formula strings, and access data like cell formatting that standard formulas can't reach.</p> </li> <li> <a href="/blog/animated-charts-in-excel/">Animated charts in Excel</a> <time datetime="2008-08-19T12:00:00Z">Tue, 19 Aug 2008</time><p>I built a way to recreate Hans Rosling’s animated motion charts in Excel. By linking a scroll bar to a VLOOKUP table, you can dynamically update bubble chart data to create interactive animations that work offline during presentations.</p> </li> </ul> </section> <footer class="post-footer"> </footer> <div class="post-comments"><hr> <h2 id="comments">Comments</h2> <!-- wp-comments-start --> <ul> <li><strong>Isit?</strong> <em>3 May 2007 12:00 pm</em>: Is it possible to have the feeds update cumulative so the old feeds dont get replaced in excel?</li> <li><strong>Alex</strong> <em>3 May 2007 12:00 pm</em>: Hi, I have an Excel spreadsheet with URLs of move titles on IMDB, and I would like to retrieve the movie rating. I’ve read your tutorials, and this one comes closest to what I need. However I still cannot figure out what needs to be done. It looks like you have this problem solved. If so, can you possibly share your solution with me? Thank you, Alex</li> <li><strong>Kishan</strong> <em>3 May 2007 12:00 pm</em>: I came here searching for the other way round. That is to publish an RSS feed of what I have in Xcel! Thanks Anyways</li> <li><strong>venkat</strong> <em>15 Oct 2010 4:09 pm</em>: Anand Can you provide the xpath function?, I need to read a rss feed into excel, and i want only some columns of data, i would appreciate if you could send the xpath function to my email id Thanks venkat</li> <li><strong><a href="http://www.light-sensors.com" rel="nofollow">Light Sensors</a></strong> <em>2 Dec 2010 7:08 pm</em>: movie ratings really depend on how cool the movie is, i usually rate movies depending on the story line `-;</li> <li><strong>rt</strong> <em>27 Jun 2013 5:41 pm</em>: Hi, nice job ! can you share with me your xpath2 (i tried your other one without succes on amazon) ?Thanks, R</li> </ul> <!-- wp-comments-end --></div> </article> </main> <footer class="footer"> <div class="footer-columns"><details class="footer-section" id="footer-categories" open> <summary>Categories</summary> <ul> <li><a href="/blog/category/links/"><span class="nav-name">Links</span><span class="nav-count">1793</span></a></li> <li><a href="/blog/category/llms/"><span class="nav-name">LLMs</span><span class="nav-count">247</span></a></li> <li><a href="/blog/category/how-i-do-things/"><span class="nav-name">How I do things</span><span class="nav-count">187</span></a></li> <li><a href="/blog/category/things-i-learned/"><span class="nav-name">Things I learned</span><span class="nav-count">140</span></a></li> <li><a href="/blog/category/linkedin/"><span class="nav-name">Linkedin</span><span class="nav-count">133</span></a></li> <li><a href="/blog/category/coding/"><span class="nav-name">Coding</span><span class="nav-count">120</span></a></li> <li><a href="/blog/category/my-best-links/"><span class="nav-name">My best links</span><span class="nav-count">69</span></a></li> <li><a href="/blog/category/funny/"><span class="nav-name">Funny</span><span class="nav-count">56</span></a></li> <li><a href="/blog/category/education/"><span class="nav-name">Education</span><span class="nav-count">46</span></a></li> <li><a href="/blog/category/visualisation/"><span class="nav-name">Visualisation</span><span class="nav-count">44</span></a></li> <li><a href="/blog/category/quizzes/"><span class="nav-name">Quizzes</span><span class="nav-count">41</span></a></li> <li><a href="/blog/category/business-realities/"><span class="nav-name">Business realities</span><span class="nav-count">34</span></a></li> <li><a href="/blog/category/data/"><span class="nav-name">Data</span><span class="nav-count">31</span></a></li> <li><a href="/blog/category/tools/"><span class="nav-name">Tools</span><span class="nav-count">31</span></a></li> <li><a href="/blog/category/london-2000/"><span class="nav-name">London 2000</span><span class="nav-count">29</span></a></li> <li><a href="/blog/category/top-10-lists/"><span class="nav-name">Top 10 lists</span><span class="nav-count">29</span></a></li> <li><a href="/blog/category/london-2005/"><span class="nav-name">London 2005</span><span class="nav-count">27</span></a></li> <li><a href="/blog/category/excel-tips/"><span class="nav-name">Excel tips</span><span class="nav-count">25</span></a></li> <li><a href="/blog/category/games/"><span class="nav-name">Games</span><span class="nav-count">24</span></a></li> <li><a href="/blog/category/mumbai/"><span class="nav-name">Mumbai</span><span class="nav-count">20</span></a></li> <li><a href="/blog/category/interesting-experiences/"><span class="nav-name">Interesting experiences</span><span class="nav-count">17</span></a></li> <li><a href="/blog/category/classical-ilayaraja/"><span class="nav-name">Classical Ilayaraja</span><span class="nav-count">15</span></a></li> <li><a href="/blog/category/chat-transcripts/"><span class="nav-name">Chat transcripts</span><span class="nav-count">12</span></a></li> <li><a href="/blog/category/experiments/"><span class="nav-name">Experiments</span><span class="nav-count">11</span></a></li> <li><a href="/blog/category/interviews/"><span class="nav-name">Interviews</span><span class="nav-count">9</span></a></li> <li><a href="/blog/category/visualization/"><span class="nav-name">Visualization</span><span class="nav-count">8</span></a></li> <li><a href="/blog/category/open-source/"><span class="nav-name">Open source</span><span class="nav-count">6</span></a></li> <li><a href="/blog/category/simple-explanations/"><span class="nav-name">Simple explanations</span><span class="nav-count">6</span></a></li> <li><a href="/blog/category/talks/"><span class="nav-name">Talks</span><span class="nav-count">6</span></a></li> <li><a href="/blog/category/bangalore/"><span class="nav-name">Bangalore</span><span class="nav-count">5</span></a></li> <li><a href="/blog/category/diary/"><span class="nav-name">Diary</span><span class="nav-count">3</span></a></li> </ul> </details> <details class="footer-section" id="footer-archives" open> <summary>Archives</summary> <ul><li><a href="/blog/2026/07/"><span class="nav-name">Jul 2026</span><span class="nav-count">12</span></a></li><li><a href="/blog/2026/06/"><span class="nav-name">Jun 2026</span><span class="nav-count">33</span></a></li><li><a href="/blog/2026/05/"><span class="nav-name">May 2026</span><span class="nav-count">25</span></a></li><li><a href="/blog/2026/04/"><span class="nav-name">Apr 2026</span><span class="nav-count">23</span></a></li><li><a href="/blog/2026/03/"><span class="nav-name">Mar 2026</span><span class="nav-count">43</span></a></li><li><a href="/blog/2026/02/"><span class="nav-name">Feb 2026</span><span class="nav-count">31</span></a></li><li><a href="/blog/2026/01/"><span class="nav-name">Jan 2026</span><span class="nav-count">38</span></a></li> <li><a href="/blog/2025/"><span class="nav-name">2025</span><span class="nav-count">206</span></a></li> <li><a href="/blog/2024/"><span class="nav-name">2024</span><span class="nav-count">123</span></a></li> <li><a href="/blog/2023/"><span class="nav-name">2023</span><span class="nav-count">24</span></a></li> <li><a href="/blog/2022/"><span class="nav-name">2022</span><span class="nav-count">21</span></a></li> <li><a href="/blog/2021/"><span class="nav-name">2021</span><span class="nav-count">37</span></a></li> <li><a href="/blog/2020/"><span class="nav-name">2020</span><span class="nav-count">11</span></a></li> <li><a href="/blog/2019/"><span class="nav-name">2019</span><span class="nav-count">3</span></a></li> <li><a href="/blog/2018/"><span class="nav-name">2018</span><span class="nav-count">1</span></a></li> <li><a href="/blog/2016/"><span class="nav-name">2016</span><span class="nav-count">1</span></a></li> <li><a href="/blog/2015/"><span class="nav-name">2015</span><span class="nav-count">2</span></a></li> <li><a href="/blog/2014/"><span class="nav-name">2014</span><span class="nav-count">8</span></a></li> <li><a href="/blog/2013/"><span class="nav-name">2013</span><span class="nav-count">8</span></a></li> <li><a href="/blog/2012/"><span class="nav-name">2012</span><span class="nav-count">20</span></a></li> <li><a href="/blog/2011/"><span class="nav-name">2011</span><span class="nav-count">22</span></a></li> <li><a href="/blog/2010/"><span class="nav-name">2010</span><span class="nav-count">35</span></a></li> <li><a href="/blog/2009/"><span class="nav-name">2009</span><span class="nav-count">26</span></a></li> <li><a href="/blog/2008/"><span class="nav-name">2008</span><span class="nav-count">42</span></a></li> <li><a href="/blog/2007/"><span class="nav-name">2007</span><span class="nav-count">78</span></a></li> <li><a href="/blog/2006/"><span class="nav-name">2006</span><span class="nav-count">302</span></a></li> <li><a href="/blog/2005/"><span class="nav-name">2005</span><span class="nav-count">336</span></a></li> <li><a href="/blog/2004/"><span class="nav-name">2004</span><span class="nav-count">84</span></a></li> <li><a href="/blog/2003/"><span class="nav-name">2003</span><span class="nav-count">115</span></a></li> <li><a href="/blog/2002/"><span class="nav-name">2002</span><span class="nav-count">517</span></a></li> <li><a href="/blog/2001/"><span class="nav-name">2001</span><span class="nav-count">495</span></a></li> <li><a href="/blog/2000/"><span class="nav-name">2000</span><span class="nav-count">175</span></a></li> <li><a href="/blog/1999/"><span class="nav-name">1999</span><span class="nav-count">10</span></a></li> <li><a href="/blog/0001/"><span class="nav-name">0001</span><span class="nav-count">1</span></a></li> </ul> </details> <details class="footer-section" id="footer-tags" open> <summary>Tags</summary> <ul> <li><a href="/blog/tag/india/"><span class="nav-name">india</span><span class="nav-count">115</span></a></li> <li><a href="/blog/tag/data-visualization/"><span class="nav-name">data-visualization</span><span class="nav-count">97</span></a></li> <li><a href="/blog/tag/internet-history/"><span class="nav-name">internet-history</span><span class="nav-count">96</span></a></li> <li><a href="/blog/tag/search-engines/"><span class="nav-name">search-engines</span><span class="nav-count">90</span></a></li> <li><a href="/blog/tag/google/"><span class="nav-name">google</span><span class="nav-count">87</span></a></li> <li><a href="/blog/tag/llms/"><span class="nav-name">llms</span><span class="nav-count">83</span></a></li> <li><a href="/blog/tag/productivity/"><span class="nav-name">productivity</span><span class="nav-count">73</span></a></li> <li><a href="/blog/tag/humor/"><span class="nav-name">humor</span><span class="nav-count">62</span></a></li> <li><a href="/blog/tag/web-history/"><span class="nav-name">web-history</span><span class="nav-count">58</span></a></li> <li><a href="/blog/tag/microsoft/"><span class="nav-name">microsoft</span><span class="nav-count">56</span></a></li> <li><a href="/blog/tag/prompt-engineering/"><span class="nav-name">prompt-engineering</span><span class="nav-count">53</span></a></li> <li><a href="/blog/tag/chatgpt/"><span class="nav-name">chatgpt</span><span class="nav-count">52</span></a></li> <li><a href="/blog/tag/blogging/"><span class="nav-name">blogging</span><span class="nav-count">51</span></a></li> <li><a href="/blog/tag/2002/"><span class="nav-name">2002</span><span class="nav-count">49</span></a></li> <li><a href="/blog/tag/education/"><span class="nav-name">education</span><span class="nav-count">48</span></a></li> <li><a href="/blog/tag/web-development/"><span class="nav-name">web-development</span><span class="nav-count">40</span></a></li> <li><a href="/blog/tag/excel/"><span class="nav-name">excel</span><span class="nav-count">39</span></a></li> <li><a href="/blog/tag/open-source/"><span class="nav-name">open-source</span><span class="nav-count">39</span></a></li> <li><a href="/blog/tag/calvin-and-hobbes/"><span class="nav-name">calvin-and-hobbes</span><span class="nav-count">38</span></a></li> <li><a href="/blog/tag/gemini/"><span class="nav-name">gemini</span><span class="nav-count">38</span></a></li> <li><a href="/blog/tag/python/"><span class="nav-name">python</span><span class="nav-count">38</span></a></li> <li><a href="/blog/tag/javascript/"><span class="nav-name">javascript</span><span class="nav-count">37</span></a></li> <li><a href="/blog/tag/linkedin/"><span class="nav-name">linkedin</span><span class="nav-count">36</span></a></li> <li><a href="/blog/tag/london/"><span class="nav-name">london</span><span class="nav-count">36</span></a></li> </ul> </details> <details class="footer-section" id="footer-pages" open> <summary>Pages</summary> <ul> <li><a href="/blog/about-me/"><span class="nav-name">About me</span></a></li> <li><a href="/blog/ai-advice/"><span class="nav-name">AI Advice</span></a></li> <li><a href="/blog/ai-experiments/"><span class="nav-name">AI Experiments</span></a></li> <li><a href="/blog/bets-and-pranks/"><span class="nav-name">Bets and pranks</span></a></li> <li><a href="/blog/book-notes/"><span class="nav-name">Book notes</span></a></li> <li><a href="/blog/career-advice/"><span class="nav-name">Career Advice</span></a></li> <li><a href="/blog/digital-exhaust/"><span class="nav-name">Digital Exhaust</span></a></li> <li><a href="/blog/guestbook/"><span class="nav-name">Guestbook</span></a></li> <li><a href="/blog/lists/"><span class="nav-name">Lists</span></a></li> <li><a href="/blog/notes/"><span class="nav-name">Notes</span></a></li> <li><a href="/blog/prompts/"><span class="nav-name">Prompts</span></a></li> <li><a href="/blog/questions/"><span class="nav-name">Questions</span></a></li> <li><a href="/blog/quotes/"><span class="nav-name">Quotes</span></a></li> <li><a href="/blog/search/"><span class="nav-name">Search</span></a></li> <li><a href="/blog/short-stories/"><span class="nav-name">Short stories</span></a></li> <li><a href="/blog/talks/"><span class="nav-name">Talks</span></a></li> <li><a href="/blog/time/"><span class="nav-name">Time Management</span></a></li> <li><a href="/blog/where/"><span class="nav-name">Where</span></a></li> </ul> </details> </div> </footer> <footer class="footer-meta"> <a href="https://github.com/sanand0/blog/" rel="noopener" target="_blank">GitHub</a> <a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="noopener" target="_blank">CC0</a> </footer> <a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor"> <path d="M12 6H0l6-6z" /> </svg> </a><script src="/blog/js/site.js" data-site-script="true" data-nav-json="/blog/nav.json" data-enable-scroll-top="true" data-enable-theme-toggle="true" data-enable-code-copy="false" data-code-copy="copy" data-code-copied="copied!" defer></script> </body> </html>