# Method: projects.lookup

- [HTTP request](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/projects/lookup#body.HTTP_TEMPLATE)
- [Path parameters](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/projects/lookup#body.PATH_PARAMETERS)
- [Request body](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/projects/lookup#body.request_body)
  - [JSON representation](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/projects/lookup#body.request_body.SCHEMA_REPRESENTATION)
- [Response body](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/projects/lookup#body.response_body)
  - [JSON representation](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/projects/lookup#body.LookupResponse.SCHEMA_REPRESENTATION)
- [Authorization scopes](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/projects/lookup#body.aspect)
- [Try it!](https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/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/v1/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 |
|---|
| ``` { "databaseId": string, "readOptions": { object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/ReadOptions`) }, "keys": [ { object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/Shared.Types/Value#Key`) } ], "propertyMask": { object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/PropertyMask`) } } ``` |

| Fields ||
|---|---|
| `databaseId` | `string` The ID of the database against which to make the request. '(default)' is not allowed; please use empty string '' to refer the default database. |
| `readOptions` | ``object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/ReadOptions`)`` The options for this lookup request. |
| `keys[]` | ``object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/Shared.Types/Value#Key`)`` Required. Keys of entities to look up. |
| `propertyMask` | ``object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/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/v1/projects/lookup#google.datastore.v1.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/v1/EntityResult`) } ], "missing": [ { object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/EntityResult`) } ], "deferred": [ { object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/Shared.Types/Value#Key`) } ], "transaction": string, "readTime": string } ``` |

| Fields ||
|---|---|
| `found[]` | ``object (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/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/v1/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 (`https://docs.cloud.google.com/datastore/docs/reference/data/rest/Shared.Types/Value#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. |
| `transaction` | `string (https://developers.google.com/discovery/v1/type-format format)` The identifier of the transaction that was started as part of this projects.lookup request. Set only when `https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/ReadOptions#FIELDS.new_transaction` was set in `https://docs.cloud.google.com/datastore/docs/reference/data/rest/v1/projects/lookup#body.request_body.FIELDS.read_options`. A base64-encoded string. |
| `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).