I was going to suggest you could wrap things up in a table-valued function so you could query something like this:
SELECT * FROM [dbo].[ufn_example_by_area_amenity]('Auckland', 'cinema')
Function would look something like this:
CREATE FUNCTION [dbo].[ufn_example_by_area_amenity]
(
@area NVARCHAR(MAX),
@amenity NVARCHAR(MAX)
)
RETURNS TABLE AS RETURN
(
SELECT
[type],
[id],
[lat],
[lon],
[amenity],
[name]
FROM OPENJSON
(
[dbo].[clr_http_request]
(
'GET',
'http://overpass-api.de/api/interpreter?',
CONCAT('data=[out:json];area[name=%22', @area, '%22]-%3E.a;(node(area.a)[amenity=', @amenity, '];way(area.a)[amenity=', @amenity, '];rel(area.a)[amenity=', @amenity, ']; );out;'),
NULL, 10000, 0, 0
).value('/Response[1]/Body[1]', 'NVARCHAR(MAX)'),
'$.elements'
)
WITH
(
[type] nvarchar(max) N'$.type' ,
[id] nvarchar(max) N'$.id',
[lat] nvarchar(max) N'$.lat',
[lon] nvarchar(max) N'$.lon',
[amenity] nvarchar(max) N'$.tags.amenity',
[name] nvarchar(max) N'$.tags.name'
)
);