> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/~/changes/867/scraper-apis/web-scraper-api/features/result-processing-and-storage/cloud-storage.md).

# Cloud Storage

Scraper API job results are stored in our storage. You can get your results from our storage by `GET`ting the `/results` endpoint.

As an alternative, we can upload the results onto your cloud storage. This way, you don't have to make extra requests to fetch results - everything goes directly to your storage bucket.

{% hint style="info" %}
Cloud storage integration works only with [**Push-Pull**](/~/changes/867/scraper-apis/web-scraper-api/integration-methods/push-pull.md) integration method.
{% endhint %}

Currently, we support [**Amazon S3**](#amazon-s3) and [**Google Cloud Storage**](#google-cloud-storage). If you would like to use a different type of storage, please contact your account manager to discuss the feature delivery timeline.

The upload path looks like this: `YOUR_BUCKET_NAME/job_ID.json`. You will find the job ID in the  response that you receive from us after submitting a job.

#### Input

<table><thead><tr><th>Parameter</th><th width="187.33333333333331">Description</th><th>Valid values</th></tr></thead><tbody><tr><td><code>storage_type</code></td><td>Your cloud storage type.</td><td><code>s3</code> (AWS S3);<br><code>gcs</code> (Google Cloud Storage).</td></tr><tr><td><code>storage_url</code></td><td>Your cloud storage name.</td><td>Any <code>s3</code> or <code>gcs</code> bucket name.</td></tr></tbody></table>

#### **Amazon S3**

To get your job results uploaded to your Amazon S3 bucket, please set up access permissions for our service. To do that, go to `https://s3.console.aws.amazon.com/ > S3 > Storage > Bucket Name (if don't have one, create a new one) > Permissions > Bucket Policy`

<div align="left"><img src="/files/bcKRmdQkmG8qD7JaBxtO" alt=""></div>

You can find the bucket policy attached below or in the code sample area.

{% file src="/files/8WCdsFHXlJa02mmKEWiU" %}
s3 bucket policy
{% endfile %}

Don't forget to change the bucket name under `YOUR_BUCKET_NAME`. This policy allows us to write to your bucket, give access to uploaded files to you, and know the location of the bucket.

```json
{
    "Version": "2012-10-17",
    "Id": "Policy1577442634787",
    "Statement": [
        {
            "Sid": "Stmt1577442633719",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::324311890426:user/oxylabs.s3.uploader"
            },
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME"
        },
        {
            "Sid": "Stmt1577442633719",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::324311890426:user/oxylabs.s3.uploader"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
        }
    ]
}
```

#### **Google Cloud Storage**

To get your job results uploaded to your Google Cloud Storage bucket, please set up special permissions for our service. To do that, create a custom role with the `storage.objects.create` permission, and assign it to the Oxylabs service account email `oxyserps-storage@oxyserps-storage.iam.gserviceaccount.com`.  &#x20;

<div align="left"><img src="/files/O2VfcObehLdAcf3raOPF" alt=""></div>

<div align="left"><img src="/files/vqQqCLOUj78wpVOtLEpi" alt=""></div>

<div align="left"><img src="/files/iDHAzvkrIRPz5bYCu7nM" alt=""></div>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/~/changes/867/scraper-apis/web-scraper-api/features/result-processing-and-storage/cloud-storage.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
