Build an Overpass query

  bbox = NULL,
  nodes_only = FALSE,
  datetime = NULL,
  datetime2 = NULL,
  timeout = 25,



Either (i) four numeric values specifying the maximal and minimal longitudes and latitudes, in the form c(xmin, ymin, xmax, ymax) or (ii) a character string in the form xmin,ymin,xmax,ymax. These will be passed to getbb to be converted to a numerical bounding box. Can also be (iii) a matrix representing a bounding polygon as returned from getbb(..., format_out = "polygon").


If TRUE, query OSM nodes only. Some OSM structures such as place = "city" or highway = "traffic_signals" are represented by nodes only. Queries are built by default to return all nodes, ways, and relation, but this can be very inefficient for node-only queries. Setting this value to TRUE for such cases makes queries more efficient, with data returned in the osm_points list item.


If specified, a date and time to extract data from the OSM database as it was up to the specified date and time, as described at This must be in ISO8601 format ("YYYY-MM-DDThh:mm:ssZ"), where both the "T" and "Z" characters must be present.


If specified, return the difference in the OSM database between datetime and datetime2, where datetime2 > datetime. See


It may be necessary to increase this value for large queries, because the server may time out before all data are delivered.


The default memory size for the 'overpass' server in bytes; may need to be increased in order to handle large queries.


An overpass_query object


See for explanation of timeout and memsize (or maxsize in overpass terms). Note in particular the comment that queries with arbitrarily large memsize are likely to be rejected.


if (FALSE) { q <- getbb ("portsmouth", display_name_contains = "United States") %>% opq () %>% add_osm_feature("amenity", "restaurant") %>% add_osm_feature("amenity", "pub") osmdata_sf (q) # all objects that are restaurants AND pubs (there are none!) q1 <- getbb ("portsmouth", display_name_contains = "United States") %>% opq () %>% add_osm_feature("amenity", "restaurant") q2 <- getbb ("portsmouth", display_name_contains = "United States") %>% opq () %>% add_osm_feature("amenity", "pub") c (osmdata_sf (q1), osmdata_sf (q2)) # all restaurants OR pubs # Use nodes_only to retrieve single point data only, such as for central # locations of cities. opq <- opq (bbox, nodes_only = TRUE) %>% add_osm_feature (key = "place", value = "city") %>% osmdata_sf (quiet = FALSE) }