Q:

How Do Chrome Apps/Extensions View Search/Browsing History if there is no permission for it?

There are several apps/extensions that work with search/browsing history, here are just two:
1) https://chrome.google.com/webstore/detail/better-history/obciceimmggglbmelaidpjlmodcebijb?hl=en
2) https://chrome.google.com/webstore/detail/history-timeline/gjhpcfomcckgcaniehfgakaddjgncpeb?hl=en
However, unless I'm missing something neither apps nor extensions have a permission for retrieving the full search or browsing history, only for deleting it, querying for a specific website, or adding urls to the history that are accessed after the app/extension is installed.
Please see my post immediately before this one if you'd like links to the permissions pages for apps and extensions.
How can I get access to all search/browsing history with an app or extension as the two examples above appear to do?

A:

Example one uses the explicit "history" permission, available to extensions.
This generates an informative warning "Read and change your browser history on all signed-in devices".
It can retrieve the actual history information with the corresponding API:
chrome.history.search({text: ""}, function(visits) {
  // The last 100 visits will be here. Filter by date to get more.
});

text
  A free-text query to the history service. Leave empty to retrieve all pages.

Example two does not show data from actual Chrome history. Instead, it has the following permissions permissions:

"tabs" permission, allowing it to catch all URL updates via onUpdated and similar events for tabs.
A content script that injects into all pages, giving access to content of pages.
Just in case, a full "<all_urls>" access to do anything with any page.

All of this results in the suitably scary "Read and change all your data on the webpages you visit" warning.
However, if you just install it, it will show a blank history. That's because it cannot access the history store without permission, and instead builds its own history database 

