Syntax

var result = proxy.retrieve(objectType, columns [, filter [, retrieveOptions [, requestProps]]]);

Parameters

Name Type Required Description
objectType string Yes SOAP API object type (e.g., "DataExtension", "Subscriber", "DataExtensionObject[CustomerKey]")
columns string[] Yes Array of property names to return
filter object No SimpleFilterPart or ComplexFilterPart
retrieveOptions object No Properties to set on the SOAP RetrieveOptions object (e.g. { BatchSize: 500 })
requestProps object No Additional request-level properties such as { QueryAllAccounts: true }

Filter Types

SimpleFilterPart

var filter = {
    Property: "Status",
    SimpleOperator: "equals",    // equals, notEquals, greaterThan, lessThan, isNull, isNotNull, like, between, IN
    Value: "Active"
};

ComplexFilterPart (AND / OR)

var filter = {
    LeftOperand: {
        Property: "Status",
        SimpleOperator: "equals",
        Value: "active"
    },
    LogicalOperator: "AND",   // or "OR"
    RightOperand: {
        Property: "Score",
        SimpleOperator: "greaterThan",
        Value: "50"
    }
};

Return Value

{
    Status: "OK",
    RequestID: "...",
    Results: [...],      // array of result objects
    HasMoreRows: false   // true when more rows exist (use retrieveBatch)
}

Examples

Retrieve all Data Extensions

var proxy = new Script.Util.WSProxy();
var result = proxy.retrieve("DataExtension", ["Name", "CustomerKey", "Description"]);
var des = result.Results;
for (var i = 0; i < des.length; i++) {
    Write(des[i].Name + " (" + des[i].CustomerKey + ")<br>");
}

Retrieve with filter

var proxy = new Script.Util.WSProxy();
var filter = {
    Property: "Status",
    SimpleOperator: "equals",
    Value: "Active"
};
var result = proxy.retrieve("TriggeredSendDefinition",
    ["Name", "CustomerKey", "Status"],
    filter
);

Retrieve DE rows

var proxy = new Script.Util.WSProxy();
var result = proxy.retrieve(
    "DataExtensionObject[MyDE_CustomerKey]",
    ["Email", "FirstName", "Score"],
    {
        Property: "Score",
        SimpleOperator: "greaterThan",
        Value: "80"
    }
);
var rows = result.Results;

Retrieve a subscriber

var proxy = new Script.Util.WSProxy();
var result = proxy.retrieve(
    "Subscriber",
    ["EmailAddress", "SubscriberKey", "Status"],
    {
        Property: "SubscriberKey",
        SimpleOperator: "equals",
        Value: "sub_12345"
    }
);
var sub = result.Results[0];

Retrieve across all business units

var proxy = new Script.Util.WSProxy();
var result = proxy.retrieve(
    "DataExtension",
    ["Name", "CustomerKey"],
    {},
    null,
    { QueryAllAccounts: true }
);

Manual pagination with getNextBatch

var proxy = new Script.Util.WSProxy();
var result = proxy.retrieve("DataExtension", ["Name", "CustomerKey"]);

while (result.HasMoreRows) {
    // process result.Results ...
    result = proxy.getNextBatch("DataExtension", result.RequestID);
}

Notes

  • Returns up to ~2,500 rows per call. When HasMoreRows is true, call getNextBatch with the RequestID to fetch subsequent pages, or use retrieveBatch which handles pagination automatically.
  • The DataExtensionObject[CustomerKey] syntax is used for retrieving rows from a specific DE. Replace CustomerKey with the DE’s external key.
  • retrieveOptions and requestProps are only needed for advanced SOAP scenarios. Most scripts only require the first three parameters.

See Also