There are 3 possible ways to get that information, some are less precise than the other but each of them can be useful depending on your specific requirement or use case.
Search
The search capabilites of the Stack Exchange sites don't have the possiblity to search for ALL on-hold questions because the status on-hold is not differentiated from closed in the search engine.
If you are interested in the recent/new questions that are on hold you could use the search query:
closed:yes created:5d.. duplicate:no migrated:no
but that only works for questions asked in the last 5 days.
Stack API
To get the results you are after you need to leverage the Stack API which I have used in the included and runnable code snippet:
(function () {
var api = {
url: 'https://api.stackexchange.com/2.2/',
endpoint: 'search/advanced',
params: {
site: 'stackoverflow',
pagesize: 100,
order: 'desc',
sort: 'activity',
closed: 'True',
migrated: 'False',
Filter: '!Pw)kIARMuFW9bQ0Mxv)LqDCFAFq9fY'
}
};
function createUrl(ap) {
var ep = ap.url + ap.endpoint +'?',
nv = [];
$.each(ap.params, function (k,v) {
nv.push(k + '=' + v);
});
console.log(ep + nv.join('&'));
return ep + nv.join('&');
}
function enableLoad(func) {
$('#load').show();
$('#load').one('click', func);
}
function load(page) {
console.log(page);
api.params.page = page;
$('#load').hide();
$.get(createUrl(api), function (data) {
var i,
list = $('#onhold'),
next;
for(i = 0; i < data.items.length; i = i +1) {
if (typeof data.items[i].closed_details !== 'undefined' &&
data.items[i].closed_details.on_hold) {
list.append(
$('<div></div>').append(
$('<a></a>')
.attr('href', data.items[i].link)
.html(data.items[i].title)
));
}
}
if (data.has_more) {
next = function () { load(page + 1); };
if (data.backoff !== undefined) {
window.setTimeout( function () {
enableLoad(next);
},
data.items.backoff * 1000);
} else {
enableLoad(next);
}
} else {
$('#load').hide();
}
});
}
load(1);
}());
#onhold div {
overflow:hidden;
text-overflow: ellipsis;
white-space:nowrap;
}
#load {
padding: 1em;
text-align: center;
cursor: pointer
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="error" style="display:none">
</div>
<div id="onhold">
</div>
<div id="load" style="display:none">
Click to load more ...
</div>
This works by using the search/advanced
endpoint, iterating over the results and check if in the subtype closed_details
the field on_hold
is true.
In that case I add a link to the question in the result. As the results are paged you have to click load more to load the next batch.
The Stack Exchange Data Explorer
One other option that could work once a week is to query SEDE just after the refresh (normally on Monday morning around 3:00 UTC). The following query could help with that:
declare @lastupdate datetime
select @lastupdate = create_date
from sys.databases
where database_id = db_id()
select [postid] as [Post Link]
from posthistory
where creationdate > dateadd(d, -5, @lastupdate)
and posthistorytypeid = 10 -- close
At posting this query returned 3,586 rows for Stack Overflow.
closed:1 active:2d
for closed questions which last activity was less than two days.