Google Graveyard

Headstones for the cluster of 2003-2009 hacks I built on top of Google's SOAP Search API, AJAX Search, Translate v1 and Image Search HTML. All of those APIs are now dead; this page keeps the ideas alive.

Between 2003 and 2009 I built a small zoo of toys on top of Google's Search API. The Beatles had been a band, Google had a SOAP endpoint, and putting "API" next to "Google" still felt slightly transgressive. Then Google closed the door, and a decade of clever little hacks quietly stopped working.

Each card below is one of those hacks. I've kept the explanation of the clever bit separate from the description, because the clever bit is the part that I still like to look at.

Google Battle

Google Battle form: two search-term inputs and an answer button
What: Type two terms, and the loser-versus-winner is decided by which one shows up more often in the snippets of the OR-query for both.
Clever bit: Don't compare two separate hit-counts (noisy, depends on Google's index quirks). Run a single OR-query and count which term wins inside that single result page — comparing apples in the same basket.
Google SOAP Search API · launch post

Google Share

domain: Beatles
John Lennon(34.1%)
Paul McCartney(27.4%)
George Harrison(22.6%)
Ringo Starr(15.9%)
What: Implementation of Steven Berlin Johnson's concept. Pick a domain ("Beatles") and items ("John, Paul, George, Ringo"), get a pie chart of each item's mind-share within that domain.
Clever bit: Treats Google's search result count as a proxy for cultural prominence, then ratios the items so they sum to 100%. The Paul slice is bigger than the Ringo slice. Of course it is.
Google SOAP Search API · launch post

Google Talk

screenshot wanted
What: Type 3-4 seed words, watch Google "continue" the sentence — search the seed, find the most common next word in the snippets, append, slide the window, repeat.
Clever bit: A Markov-chain text generator where the n-gram corpus is the entire indexed web, queried live. Works as an oracle too — start "the meaning of life is" and let Google finish it.
Google SOAP Search API · launch post

Google History / Answers

Google History year-extraction graph
What: Ask "when did Galileo invent the telescope?" Scan the top 10 Google results for 4-digit numbers; the year that shows up most is probably the answer.
Clever bit: Normalise candidate years against background year frequency on the web. 1999 shows up everywhere; if 1609 shows up just as much in a small sample for a specific query, 1609 is the signal.
Google SOAP Search API · launch post

Google Elections

State-by-state Google-predicted US election map
What: Predict the US presidential election state-by-state. For each state, compare Google hits for "democrat <state>" vs "republican <state>", normalised by the party-only baseline; colour the map accordingly.
Clever bit: The whole point is to show search-volume is not a poll. The map looks plausible enough that you start to wonder. Then you remember it's just snippet counting.
Google SOAP Search API

Landgeist

Landgeist world map coloured by Google share for a keyword
What: Type a keyword — "war", "tea", "party" — and watch a world map colour itself in by each country's relative Google share for that word. Some words light up the places you'd expect; others draw cultural Rorschach blots.
Clever bit: Google Share, but with country names as the domain, rendered live: as each country's AJAX query came back the Chart-API map URL got rebuilt and the <img> reloaded. A reactive chart from before reactive was a word.
Google AJAX Search API · Google Chart API

Best Time to Visit

screenshot wanted
What: Type a place; get back the two months Google thinks you should go. Searches for "best time to visit <place>", then counts month-name occurrences in the descriptions.
Clever bit: Extracting structured data (months) out of free-form snippets by looking for a fixed small vocabulary. Same trick Google itself eventually started doing for everything.
Google SOAP Search API · launch post

Google Date

screenshot wanted
What: Same trick as Google History but for full dates rather than just years. Ask when something happened, the algorithm hands back its best date guess.
Clever bit: Date formats are messier than years (1609 is unambiguous; "May 4" isn't), so the matcher has to score multiple representations of the same date together.
Google SOAP Search API · launch post

Google Top 1000

screenshot wanted
What: For every integer from 1 to 1000, find the #1 Google result. Position 42 is famously a Hitchhiker's Guide page; the rest is a strange little census of the web.
Clever bit: Zero clever, all curation. Just a script that runs 1000 queries and dumps the top hit. The result is funnier than it has any right to be.
Google SOAP Search API · launch post

Poetry in Translation

screenshot wanted
What: Take an English sentence, translate it through German → French → German → English via Google Translate. "A thorn in my flesh" becomes "a spine in my meat".
Clever bit: The Telephone game in machine form. Translation chain length is a dial: short for charming, long for surrealist.
Google Translate v1 · launch post

Visual Poetry

screenshot wanted
What: Type a poem, get a slideshow: each word turned into the top result from Google Image Search. You read your poem in pictures.
Clever bit: Treating Image Search as an "illustrate this word for me" function. The errors are the best part — "the" returns weird stuff.
Google Image Search HTML · launch post · featured in NTT ICC's Art Meets Media (2005)

Google Random Image

screenshot wanted
What: Drop a snippet of JS on your page; it scrapes its own surrounding HTML, picks keywords, and pulls a matching image from Google Image Search to display.
Clever bit: Pure browser, no server. Couldn't read the iframe's DOM (cross-origin), so it loaded a 150×150 iframe and scrolled it to the right pixel offset — using the page layout itself as a co-ordinate system.
Google Image Search HTML, iframe · launch post

Google Pos

screenshot wanted
What: Command-line tool. Give it your domain and a keyword; it tells you what position your site holds for that keyword on Google.
Clever bit: The polite tool in the bunch — proto-SEO from before SEO was a job title. Run it nightly and you've got rank tracking.
Google SOAP Search API

Google Protocol

screenshot wanted
What: A tiny Windows installer that registers two extra URL schemes: google: opens a Google search for its argument, lucky: opens the first result directly.
Clever bit: Repurposing the Windows registry's protocol-handler hook to make the address bar into a search bar — years before browsers built that in.
Windows registry · launch post

ZGoogle

screenshot wanted
What: A Zope product (Python package) wrapping Mark Pilgrim's PyGoogle, so you could call the Google API directly from inside Zope Python Scripts. Half the projects on this page used it.
Clever bit: Plumbing. The clever bit was Mark's; mine was the __init__.py that made it visible to Zope's product registry.
Google SOAP Search API
Why none of these run any more:
  • Google SOAP Search API — launched 2002, deprecated Dec 2006, fully shut down Aug 2009.
  • Google AJAX Search API (its replacement) — deprecated Nov 2010, retired 2014.
  • Google Translate v1 (free REST) — retired Dec 2011, replaced with paid Cloud Translation.
  • Google Image Search HTML scraping — broken by the move to a JS-heavy single-page UI around 2011.
  • Google Chart API (image charts) — deprecated 2012, finally turned off in 2019.

If I want your opinion, I'll ask you to fill out the necessary form.