```yaml
product: AlterLab
title: "Output Format — Web Scraping Glossary | AlterLab"
comparison_context: "AlterLab is an alternative to Firecrawl, ScrapingBee, and Bright Data."
source_url: https://alterlab.io/glossary/output-format
```

format

# Output Format

Output format refers to the structured file or data format in which scraped results are delivered — JSON, CSV, Parquet, NDJSON, or database rows — each suited to different downstream consumers.

The choice of output format determines how easily downstream systems can consume scraped data. JSON is the most versatile: it supports nested structures, is human-readable, and is natively parsed by every modern language. CSV is simpler and works well for flat tabular data that must be opened in spreadsheets or ingested by legacy systems. NDJSON (newline-delimited JSON) is ideal for streaming large datasets where each line is a self-contained JSON object.

For analytics warehouses (BigQuery, Snowflake), Parquet is the preferred format: columnar layout with efficient compression reduces query cost dramatically compared to JSON or CSV. Apache Avro is used in streaming pipelines (Kafka) where schema evolution and compact binary encoding matter.

AlterLab returns scraped data as JSON by default. For bulk exports, NDJSON streaming allows the caller to begin processing records before the full dataset is transmitted, reducing end-to-end latency for large crawl jobs.

### What is Output Format?

Output format refers to the structured file or data format in which scraped results are delivered — JSON, CSV, Parquet, NDJSON, or database rows — each suited to different downstream consumers.

### How does AlterLab handle Output Format?

AlterLab returns scraped data as JSON by default. For bulk exports, NDJSON streaming allows the caller to begin processing records before the full dataset is transmitted, reducing end-to-end latency for large crawl jobs.

## Examples

```
# Writing scraped results in NDJSON format (one JSON object per line)
import json

with open("output.ndjson", "w") as f:
    for record in scraped_records:
        f.write(json.dumps(record) + "\n")

# Reading NDJSON:
with open("output.ndjson") as f:
    records = [json.loads(line) for line in f]
```

## Related Terms

[Structured OutputStructured output is data extracted from web pages and returned in a machine-readable format such as JSON or CSV, with well-defined fields rather than raw HTML text.](https://alterlab.io/glossary/structured-output)[JSONJavaScript Object Notation — the universal text format for structured data exchange between APIs and web services.](https://alterlab.io/glossary/json)[Data PipelineA data pipeline is an automated sequence of steps that ingests raw data from a source, transforms it, and delivers it to a destination such as a database, data warehouse, or analytics system.](https://alterlab.io/glossary/data-pipeline)[ETL (Extract, Transform, Load)ETL is a data integration pattern where raw data is Extracted from a source, Transformed into the desired format, and Loaded into a destination system.](https://alterlab.io/glossary/etl)[Schema ValidationSchema validation checks that extracted data conforms to an expected structure and type constraints before it is written to a database or downstream system.](https://alterlab.io/glossary/schema-validation)

## Extract Output Format data from any website

AlterLab returns clean, structured data from any public URL — no scraper infrastructure needed. Start free, no credit card required.

[View API docs](https://alterlab.io/docs/api/rest)

[Back to Glossary](https://alterlab.io/glossary)