Systems and methods are described that allow programmatic access to search
engine results and query logs in a structured form. The search results
can be retrieved from the search engine in an intermediary form that
contains the information that is in the HTML pages provided to web
browsers (potentially with additional information). This intermediary
form can then be broken down on the client machine, using local
resources, to assemble the structured objects. The library also provides
for caching of the search results. This can be provided both on the local
machine and on a remote database. When the results for a query exist in
the caches, they can be retrieved from such location instead of querying
the search engine. Documents and/or web pages can also be cached. The
library can also be directed to operate only from the cache, effectively
exposing a local data set instead of the remote search engine.