• 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'
        )
    );