Tüm ürünleri bulk operation ile dışa aktarma

Tüm Shopify ürünlerini ve varyantlarını bulkOperationRunQuery ile JSONL dosyasına aktarın, işlemi takip edin ve sonucu indirin.

API
Admin GraphQL API
İşlemler
bulkOperationRunQuery, bulkOperation
Erişim yetkisi
read_products
Yerini aldığı REST çağrısı
page_info ile sayfalanan GET /admin/api/products.json
API sürümü
2026-10
Son kontrol

Kısaca

Shopify’dan tüm ürünleri dışa aktarmak için bulkOperationRunQuery mutation’ı ile bir bulk operation başlatın, durumu COMPLETED olana kadar bulkOperation sorgusuyla takip edin, ardından url alanındaki JSONL dosyasını indirin. Bulk operation’lar büyük aktarımlarda sayfalama ve istek sınırlarıyla uğraştırmaz. Her satır bir kayıttır; varyantlar, ait oldukları ürünü gösteren bir __parentId taşır.

Nasıl kullanılır

  1. StartProductExport mutation’ını, ürün sorgusunu query değişkenine koyarak gönderin. İhtiyacınız olan alanları bu sorgunun içine yazın; bağlantılar (connection) için first ya da after gerekmez.
  2. Dönen bulk operation ID’sini saklayın ve birkaç saniyede bir ProductExportStatus ile durumu sorgulayın ya da bulk_operations/finish webhook’una abone olun.
  3. Durum COMPLETED olduğunda url’deki dosyayı indirin. Link bir hafta sonra geçerliliğini yitirir.
  4. Dosyayı satır satır okuyun. Ürünleri, varyantlardaki __parentId ile yeniden bir araya getirin.

Kod

bulk-operation-run-query.graphql
mutation StartProductExport($query: String!) {
  bulkOperationRunQuery(query: $query) {
    bulkOperation {
      id
      status
    }
    userErrors {
      field
      message
    }
  }
}
bulk-operation-run-query.variables.json
{
  "query": "{ products { edges { node { id handle title status vendor productType tags variants { edges { node { id sku price inventoryQuantity } } } } } } }"
}
bulk-operation-run-query.response.json
{
  "data": {
    "bulkOperationRunQuery": {
      "bulkOperation": {
        "id": "gid://shopify/BulkOperation/1234567890",
        "status": "CREATED"
      },
      "userErrors": []
    }
  }
}
bulk-operation-status.graphql
query ProductExportStatus($id: ID!) {
  bulkOperation(id: $id) {
    id
    status
    errorCode
    objectCount
    fileSize
    url
    partialDataUrl
  }
}
bulk-operation-status.variables.json
{
  "id": "gid://shopify/BulkOperation/1234567890"
}
bulk-operation-status.response.json
{
  "data": {
    "bulkOperation": {
      "id": "gid://shopify/BulkOperation/1234567890",
      "status": "COMPLETED",
      "errorCode": null,
      "objectCount": "2483",
      "fileSize": "1048576",
      "url": "https://storage.googleapis.com/shopify-tiers-assets-prod-us-east1/bulk-operation-outputs/example.jsonl",
      "partialDataUrl": null
    }
  }
}
result.jsonl
{"id":"gid://shopify/Product/1111111111","handle":"linen-shirt","title":"Linen shirt","status":"ACTIVE","vendor":"Your Brand","productType":"Shirts","tags":["summer"]}
{"id":"gid://shopify/ProductVariant/2222222222","sku":"LS-S","price":"49.00","inventoryQuantity":12,"__parentId":"gid://shopify/Product/1111111111"}
{"id":"gid://shopify/ProductVariant/3333333333","sku":"LS-M","price":"49.00","inventoryQuantity":0,"__parentId":"gid://shopify/Product/1111111111"}

Lintel tarafından yazıldı. MIT lisansı: kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.

Sınırlar ve özel durumlar

  • Bir uygulama aynı anda en fazla beş bulk sorgu işlemi çalıştırabilir.
  • Durum FAILED ise nedeni errorCode’da yazar; partialDataUrl, hatadan önce aktarılan veriyi içerebilir.
  • objectCount ve fileSize, bir JavaScript sayısından büyük olabildikleri için metin (string) olarak döner.
  • Bir bulk sorgusunda iç içe bağlantılar en fazla iki seviye olabilir.

Sık sorulan sorular

Tüm Shopify ürünlerini GraphQL ile nasıl dışa aktarırım?
Bir products sorgusuyla bulkOperationRunQuery kullanın, işlemin tamamlanmasını bekleyin, ardından url alanındaki JSONL dosyasını indirin. Birkaç yüz ürün için normal, sayfalanmış bir products sorgusu da iş görür.
Sonuç neden JSON değil de JSONL?
Tüm aktarımı belleğe yüklemeden satır satır okunabilmesi için. Varyantlar gibi alt kayıtlar, __parentId taşıyan ayrı satırlardır.
Aktarıma metafield’ları ekleyebilir miyim?
Evet. Ürün düğümünün içine metafields { edges { node { namespace key value } } } ekleyin; her metafield, ürünü __parentId olarak gösteren ayrı bir satır olur.
  • Gösterilen tarihte, 2026-10 sürümünün Admin veya Storefront API şemasıyla doğrulandı. İstek adresinizdeki sürümü kontrol edin.
  • Örneklerdeki ID’ler ve mağaza adresleri yer tutucudur. Kendi değerlerinizle değiştirin.
  • Admin API çağrıları uygulamanızdan bir erişim anahtarı (access token) ister. Admin API anahtarını asla vitrine ya da temaya koymayın.
  • MIT lisansı. Kodu kendi mağazanızda da müşteri işlerinizde de kullanabilirsiniz.

Mağazanız için kurulmasını, test edilmesini ve bakımını isterseniz: API entegrasyonları.

Geliştirmek istediğiniz bir şey mi var? Gelin, birlikte konuşalım.

Aynı anda sınırlı sayıda proje alıyoruz.

Gencer KarakayaShopify mühendisi

Proje özetinizi bir mühendis okur; size e-postayla yanıt veririz.