Skip to contents

Add a feature specified by OSM ID to an Overpass query


  id = NULL,
  type = NULL,
  open_url = FALSE,
  out = "body",
  datetime = NULL,
  datetime2 = NULL,
  adiff = FALSE,
  timeout = 25,



One or more official OSM identifiers (long-form integers), which must be entered as either a character or numeric value (because R does not support long-form integers). id can also be a character string prefixed with the id type, e.g. "relation/11158003"


Type of objects (recycled); must be either node, way, or relation. Optional if id is prefixed with the type.


If TRUE, open the OSM page of the specified object in web browser. Multiple objects (id values) will be opened in multiple pages.


The level of verbosity of the overpass result: body (geometries and tags, the default), tags (tags without geometry), meta (like body + Timestamp, Version, Changeset, User, User ID of the last edition), skel (geometries only), tags center (tags without geometry + the coordinates of the center of the bounding box) and ids (type and id of the objects only).


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


If TRUE, query for augmented difference. The result indicates what happened to the modified and deleted OSM objects. Requires datetime(2)*.


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.


opq object


Extracting elements by ID requires explicitly specifying the type of element. Only elements of one of the three given types can be extracted in a single query, but the results of multiple types can nevertheless be combined with the c operation of osmdata.


if (FALSE) {
id <- c (1489221200, 1489221321, 1489221491)
dat1 <- opq_osm_id (type = "node", id = id) %>%
    opq_string () %>%
    osmdata_sf ()
dat1$osm_points # the desired nodes
id <- c (136190595, 136190596)
dat2 <- opq_osm_id (type = "way", id = id) %>%
    opq_string () %>%
    osmdata_sf ()
dat2$osm_lines # the desired ways
dat <- c (dat1, dat2) # The node and way data combined
# All in one (same result as dat)
id <- c (1489221200, 1489221321, 1489221491, 136190595, 136190596)
type <- c ("node", "node", "node", "way", "way")
datAiO <- opq_osm_id (id = id, type = type) %>%
    opq_string () %>%
    osmdata_sf ()