# Method: projects.lookup

- [HTTP request](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/projects/lookup#body.HTTP_TEMPLATE)
- [Path parameters](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/projects/lookup#body.PATH_PARAMETERS)
- [Request body](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/projects/lookup#body.request_body)
  - [JSON representation](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/projects/lookup#body.request_body.SCHEMA_REPRESENTATION)
- [Response body](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/projects/lookup#body.response_body)
  - [JSON representation](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/projects/lookup#body.LookupResponse.SCHEMA_REPRESENTATION)
- [Authorization scopes](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/projects/lookup#body.aspect)
- [Try it!](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/projects/lookup#try-it)

Looks up entities by key.

### HTTP request

Choose a location:
<button value="global" default="">global</button> <button value="africa-south1">africa-south1</button> <button value="asia-east1">asia-east1</button> <button value="asia-east2">asia-east2</button> <button value="asia-northeast1">asia-northeast1</button> <button value="asia-northeast2">asia-northeast2</button> <button value="asia-northeast3">asia-northeast3</button> <button value="asia-south1">asia-south1</button> <button value="asia-south2">asia-south2</button> <button value="asia-southeast1">asia-southeast1</button> <button value="asia-southeast2">asia-southeast2</button> <button value="asia-southeast3">asia-southeast3</button> <button value="australia-southeast1">australia-southeast1</button> <button value="australia-southeast2">australia-southeast2</button> <button value="europe-central2">europe-central2</button> <button value="europe-north1">europe-north1</button> <button value="europe-north2">europe-north2</button> <button value="europe-southwest1">europe-southwest1</button> <button value="europe-west1">europe-west1</button> <button value="europe-west10">europe-west10</button> <button value="europe-west12">europe-west12</button> <button value="europe-west2">europe-west2</button> <button value="europe-west3">europe-west3</button> <button value="europe-west4">europe-west4</button> <button value="europe-west6">europe-west6</button> <button value="europe-west8">europe-west8</button> <button value="europe-west9">europe-west9</button> <button value="me-central1">me-central1</button> <button value="me-central2">me-central2</button> <button value="me-west1">me-west1</button> <button value="northamerica-northeast1">northamerica-northeast1</button> <button value="northamerica-northeast2">northamerica-northeast2</button> <button value="northamerica-south1">northamerica-south1</button> <button value="southamerica-east1">southamerica-east1</button> <button value="southamerica-west1">southamerica-west1</button> <button value="us-central1">us-central1</button> <button value="us-east1">us-east1</button> <button value="us-east4">us-east4</button> <button value="us-east5">us-east5</button> <button value="us-south1">us-south1</button> <button value="us-west1">us-west1</button> <button value="us-west2">us-west2</button> <button value="us-west3">us-west3</button> <button value="us-west4">us-west4</button> <button value="eu">eu</button> <button value="us">us</button>   
`POST https://datastore.googleapis.com/v1beta3/projects/{projectId}:lookup`

<br />

The URLs use [gRPC Transcoding](https://google.aip.dev/127) syntax.

### Path parameters

| Parameters ||
|---|---|
| `projectId` | `string` Required. The ID of the project against which to make the request. |

### Request body

The request body contains data with the following structure:

| JSON representation |
|---|
| ``` { "readOptions": { object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/ReadOptions`) }, "keys": [ { object (`Key`) } ], "propertyMask": { object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/PropertyMask`) } } ``` |

| Fields ||
|---|---|
| `readOptions` | ``object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/ReadOptions`)`` The options for this lookup request. |
| `keys[]` | ``object (`Key`)`` Required. Keys of entities to look up. |
| `propertyMask` | ``object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/PropertyMask`)`` The properties to return. Defaults to returning all properties. If this field is set and an entity has a property not referenced in the mask, it will be absent from \[LookupResponse.found.entity.properties\]\[\]. The entity's key is always returned. |

### Response body

The response for `https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/projects/lookup#google.datastore.v1beta3.Datastore.Lookup`.

If successful, the response body contains data with the following structure:

| JSON representation |
|---|
| ``` { "found": [ { object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/EntityResult`) } ], "missing": [ { object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/EntityResult`) } ], "deferred": [ { object (`Key`) } ], "readTime": string } ``` |

| Fields ||
|---|---|
| `found[]` | ``object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/EntityResult`)`` Entities found as `ResultType.FULL` entities. The order of results in this field is undefined and has no relation to the order of the keys in the input. |
| `missing[]` | ``object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1beta3/EntityResult`)`` Entities not found as `ResultType.KEY_ONLY` entities. The order of results in this field is undefined and has no relation to the order of the keys in the input. |
| `deferred[]` | ``object (`Key`)`` A list of keys that were not looked up due to resource constraints. The order of results in this field is undefined and has no relation to the order of the keys in the input. |
| `readTime` | ``string (`https://protobuf.dev/reference/protobuf/google.protobuf#timestamp` format)`` The time at which these entities were read or found missing. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: `"2014-10-02T15:01:23Z"`, `"2014-10-02T15:01:23.045123456Z"` or `"2014-10-02T15:01:23+05:30"`. |

### Authorization scopes

Requires one of the following OAuth scopes:

- `https://www.googleapis.com/auth/datastore`
- `https://www.googleapis.com/auth/cloud-platform`

For more information, see the [Authentication Overview](https://docs.cloud.google.com/docs/authentication#authorization-gcp).