Google Custom Search Engine (CSE) and Custom Search API (Key enabled from Cloud Developer Console) are different products. Since there is no built-in API with CSE engine, if users want to retrieve results using JSON API, they will need to use the API key (enabled from Cloud Developer Console) along with the CSE engine ID and query. The results will be served as per the CSE configuration.
The API has two versions:
i) The normal Custom Search JSON API which provides 100 search queries per day for free. If you need more, you may sign up for billing in the API Console. Additional requests cost $5 per 1000 queries, up to 10k queries per day. For this API, even if your “Sites to search” configuration is configured with more than 10 sites, it will still serve results from them.
ii) The other Custom Search Site Restricted JSON API also provides 100 search queries per day for free. If you need more, you may sign up for billing in the API Console. Additional requests cost $5 per 1000 queries but there is no daily query limit as compared to the normal API. But, there is a restriction that to use this API, your “Sites to search” configuration on the CSE control panel has to be 10 or less than 10 sites configured. If you need more than 10k queries per day and your Custom Search Engine searches 10 sites or fewer, you can use this Custom Search Site Restricted JSON API, which does not have a daily query limit.
For both the APIs, you can only retrieve a maximum of 100 results for a query.
There’s a difference between two limitations: a) max 100 queries per day; and b) max 100 results per searched phrase (even split into 10 queries of 10 results per query). The limitation (a) can be solved by paying to Google, whereas limitation (b) cannot be solved at all, it seems to be a feature of the CSE product when searching the whole web (i.e. not just a site search, which can give more results).