---
title: "API Documentation"
description: "Complete API reference for WebScraping.AI. Learn how to scrape websites, extract data with AI, and integrate with your applications."
url: https://webscraping.ai/docs#ai-fields
markdown_index: https://webscraping.ai/llms.txt
---
## Extract Structured Fields

Extract specific data fields from any webpage as structured JSON. Ideal for scraping product details, articles, profiles, and more.

`GET /ai/fields`

##### Parameters [→ All parameters reference](https://webscraping.ai/docs/parameters.md)

| Parameter | Type | Description |
| --- | --- | --- |
| url required | string | URL of the webpage to extract from |
| fields required | object | Object with field names as keys and extraction instructions as values |
| api\_key required | string | Your API key |

##### Example - Extract Product Data

**cURL**

```bash
curl -G "https://api.webscraping.ai/ai/fields" \
  --data-urlencode "api_key=YOUR_API_KEY" \
  --data-urlencode "url=https://amazon.com/dp/B08N5WRWNW" \
  --data-urlencode "fields[title]=Product title" \
  --data-urlencode "fields[price]=Current price with currency" \
  --data-urlencode "fields[rating]=Average star rating"
```

**Python**

```python
# pip install webscraping_ai
# https://pypi.org/project/webscraping-ai/
from webscraping_ai import Client

client = Client(api_key="YOUR_API_KEY")
result = client.fields(
    "https://amazon.com/dp/B08N5WRWNW",
    fields={
        "title": "Product title",
        "price": "Current price with currency",
        "rating": "Average star rating",
    },
)
print(result)
```

**JavaScript**

```javascript
// npm install webscraping-ai
// https://www.npmjs.com/package/webscraping-ai
import { WebScrapingAI } from 'webscraping-ai';

const client = new WebScrapingAI({ apiKey: 'YOUR_API_KEY' });
const result = await client.fields({
  url: 'https://amazon.com/dp/B08N5WRWNW',
  fields: {
    title: 'Product title',
    price: 'Current price with currency',
    rating: 'Average star rating',
  },
});
console.log(result);
```

**PHP**

```php
<?php
// composer require webscraping-ai/webscraping-ai-php
// https://packagist.org/packages/webscraping-ai/webscraping-ai-php
require 'vendor/autoload.php';

use WebScrapingAI\Client;

$client = new Client('YOUR_API_KEY');
$result = $client->fields('https://amazon.com/dp/B08N5WRWNW', [
    'title' => 'Product title',
    'price' => 'Current price with currency',
    'rating' => 'Average star rating',
]);
print_r($result);
```

**Ruby**

```ruby
# gem install webscraping_ai
# https://rubygems.org/gems/webscraping_ai
require 'webscraping_ai'

client = WebScrapingAI::Client.new(api_key: 'YOUR_API_KEY')
result = client.fields(
  'https://amazon.com/dp/B08N5WRWNW',
  fields: {
    title: 'Product title',
    price: 'Current price with currency',
    rating: 'Average star rating'
  }
)
puts result.inspect
```

**Go**

```go
// go get github.com/webscraping-ai/webscraping-ai-go/v4
// https://pkg.go.dev/github.com/webscraping-ai/webscraping-ai-go/v4
package main

import (
    "context"
    "fmt"

    webscrapingai "github.com/webscraping-ai/webscraping-ai-go/v4"
)

func main() {
    client, _ := webscrapingai.NewClient(&webscrapingai.Config{APIKey: "YOUR_API_KEY"})
    result, _ := client.Fields(context.Background(), &webscrapingai.FieldsOptions{
        URL: "https://amazon.com/dp/B08N5WRWNW",
        Fields: map[string]string{
            "title": "Product title",
            "price": "Current price with currency",
            "rating": "Average star rating",
        },
    })
    fmt.Println(result.Result)
}
```

**Java**

```java
// Maven: ai.webscraping:webscraping-ai:4.2.0
// https://central.sonatype.com/artifact/ai.webscraping/webscraping-ai
import ai.webscraping.Client;
import ai.webscraping.Config;
import ai.webscraping.option.FieldsOptions;
import ai.webscraping.result.FieldsResult;

Client client = new Client(Config.builder().apiKey("YOUR_API_KEY").build());
FieldsResult result = client.fields(FieldsOptions.builder()
    .url("https://amazon.com/dp/B08N5WRWNW")
    .addField("title", "Product title")
    .addField("price", "Current price with currency")
    .addField("rating", "Average star rating")
    .build());
System.out.println(result.getResult());
```

**C#**

```csharp
// dotnet add package WebScrapingAI
// https://www.nuget.org/packages/WebScrapingAI
using WebScrapingAI;

var client = new WebScrapingAIClient(new WebScrapingAIClientOptions { ApiKey = "YOUR_API_KEY" });
var result = await client.FieldsAsync(new FieldsRequest {
    Url = "https://amazon.com/dp/B08N5WRWNW",
    Fields = new Dictionary<string, string> {
        ["title"] = "Product title",
        ["price"] = "Current price with currency",
        ["rating"] = "Average star rating",
    },
});
Console.WriteLine(result.Result);
```

##### Response

The extracted fields come back under a `result` key; a field the page doesn't contain is `null`.

```json
{
  "result": {
    "title": "Apple AirPods Pro (2nd Generation)",
    "price": "$249.00",
    "rating": "4.7 out of 5 stars"
  }
}
```

**Pro tip:** Be specific with your field descriptions. Instead of "price", use "Current sale price including currency symbol" for better accuracy.
